💡추상화 (Abstraction)
추상화는 관련 없는 사항을 은닉 또는 삭제하여 핵심적인 개념 또는 기능만을 간추려 내는 작업으로, 나에게 필요한 특징만을 표현하여 본질적 문제에 집중할 수 있도록 한다.
⚬ 소프트웨어 설계
소프트웨어 설계는 요구사항 분석 단계에서 산출된 요구사항명세서를 기반으로 어떻게 소프트웨어를 구현할 것인지 설계서를 통해 그 방법을 명시하는 과정이다.
⚬ 객체지향 설계 추상화
객체지향 프로그래밍(Object-Oriented Programming, OOP)은 추상화, 상속, 다형성, 캡슐화의 네 가지 특징을 가지며, 객체지향 프로그래밍 설계에서 추상화가 요구된다. 비슷한 특성을 가진 것을 그룹화하는 것을 객체지향 설계에서의 추상화라고 한다.
1. 과정 추상화 (Procedure Abstraction)
프로그램 전체를 알고리즘으로 작성하는 방법으로, 자세한 부분은 고려하지 않으며, 상위 수준에서 수행 흐름을 작성하여 전체 흐름만을 파악할 수 있도록 한다.
2. 데이터 추상화 (Data Abstraction)
데이터를 추상화하여 하나의 데이터 구조로 표현하며, 사용자에게 꼭 필요한 기능만을 사용할 수 있게 한다.
3. 제어 추상화 (Control Abstraction)
제어는 프로그램 내의 명령어의 실행 순서를 의미하며, 제어 추상화는 프로그램 명령을 사용자가 사용하기 쉽도록 추상화한다. 알고리즘 추상화(Algorithm Abstraction)라고도 한다.
💡캡슐화 (Encapsulation)
캡슐화는 클래스를 사용해 서로 연관 있는 속성 또는 처리 방식을 하나의 캡슐로 만들어 외부로부터 데이터를 보호하는 것이다. 캡슐화를 하면 데이터가 외부로부터 보호되고, 필요한 부분만 노출하여 데이터가 은닉된다.
💡상속 (Inheritance)
상속은 상위 클래스(부모 클래스)와 하위 클래스(자식 클래스)를 구분해 기존의 클래스로 새로운 클래스를 작성할 수 있도록 한다.
반복적인 코드를 최소화하면서 하위 클래스가 상위 클래스의 속성, 기능을 모두 사용할 수 있다.
💡다형성 (Polymorphism)
다형성은 객체의 속성 또는 기능, 각 요소가 상황에 따라 다양한 자료형을 가지고 다른 역할을 할 수 있는 성질을 의미한다.
1. 중복 정의 (Method Overloading)
한 클래스 안에서 같은 이름의 메서드를 다르게 사용하는 것으로, 같은 이름의 메서드가 상황에 따라 다른 역할을 한다. 중복된 메서드는 매개변수의 개수, 자료형을 통해 구분할 수 있다.
2. 재정의 (Method Overriding)
상위 클래스(부모 클래스)에서 정의한 메서드를 하위 클래스(자식 클래스)에서 재정의하는 것을 의미하며, 이때 상위 클래스 메서드와 원형은 완전히 동일해야 한다.
⚬ 예외처리 (Exception)
자바는 포인터 개념을 빼고 예외처리 기능을 넣었다. 그래서 잘못된 조작 또는 코딩으로 인해 오류가 발생하더라도 예외가 발생해 프로그램이 종료되지 않고 정상적으로 작동된다.