1. 객체지향 프로그래밍
1) 추상화 (Abstraction)와 일반화
- 어떤 영역에서 필요로 하는 속성이나 기능을 추출하는 작업
- 데이터 구조, 표현방법에 대한 추상화
- 처리 과정에 대한 추상화
- 추상화의 의도는 단순화이며, 일반화의 의도는 공통점을 뽑아내는 것
2) 캡슐화 (Encapsulation)
- 데이터를 감싸서 외부에서 사용 가능한 부분만 제공(information hiding)
- 사용하는 코드(클라이언트 코드)가 세부적인 사항을 알 필요가 없음.
- 단순한 접근을 제공하여 오류가 생길 부분을 감소화
- (private) 나만 볼수 있는 것, 같은 클래스 내부에서만 접근 가능
# (protected) 같은 패키지나 부모와 자식에게만 접근 가능 즉 상속관계의 클래스만 접근 가능
+ (public) 누구나 접근 가능, 내부,외부에서 접근 가능
~ (package)
3) 상속성 (Inheritance)
- 일반적인(general) 개념의 객체에서 보다 구체적인(specific) 개념의 객체의 관계를 표현.
- 상위 클래스의 속성과 기능을 하위 클래스에서 사용하거나 재정의 할수 있음.
4) 다형성(ploymorphism)
- 같은 메세지, 같은 구현에 대해 각 객체가 다른 표현과 결과를 나타내는 것.
- 클래스의 상속, 인터페이스의 구현 시에 다른 구현을 가진 클래스들이 상위 타입으로 업캐스팅이 됨.
- 이때 각 클래스의 오버라이딩한 메서드가 존재하는 경우 비록 상위 타입으로 선언된다 하더라도
각기 다른 인스턴스의 메서드가 호출됨.
2. 객체지향 설계
- 잘 만들어진 소프트웨어는 응집도는 높고 결합도는 낮아야 함.
1) 응집도
- 하나의 모듈, 객체 내부의 요소들간의 연관성
- 하나의 책임을 구현하는 하나의 객체는 높은 응집성을 가짐.
2) 결합도
- 객체 상호간의 연관 관계
- 결합도가 높으면 하나의 객체를 수정할때 다른 객체도 수정해야 함.
3. 추상 클래스 (Abstract Class)
- 추상 메서드를 하나 이상 가지고 있는 클래스
- 인스턴스화 할 수 없음.
- 추상 메소드는 모든 하위(파생) 클래스가 반드시 추상 메서드를 재정의 해야함.
4. 인터페이스
- 서로의 정보를 교환하기 위한 일종의 공유된 접촉점.
- 보통 interface 키워드로 정의
- 클래스끼리는 다중 상속을 지원하지 않지만
인터페이스를 사용하면 여러 인터페이스로부터 상속하는 것이 가능함.
5. 템플릿 메서드
1) 템플릿 : 틀이나 견본을 의미
2) 템플릿 메서드 : 추상 메서드나 구현된 메서드를 활용하여 전체의 흐름(시나리오)를
정의해 놓은 메서드.
final로 선언하여 재정의 할수 없게 함.
3) 템블릿 메서드 패턴
- 디자인 패턴의 일종
- 프레임워크에서 많이 사용되는 설계 패턴
- 추상 클래스로 선언된 상위 클래스에서 추상 메서드를 이용하여 전체 구현의 흐름을 정의하고
구체적인 각 메서드 구현은 하위 클래스에 위임함.
- 하위 클래스가 다른 구현을 했더라도 템플릿 메서드에 정의된 시나리오 대로 수행됨.
- 상위 클래스에서는 전체적인 흐름을 구현하고 구체적인 처리는 하위 클래스단에 위임.
'Web > Java' 카테고리의 다른 글
Java(25) - 람다식 (0) | 2022.01.28 |
---|---|
Java(24) - 내부클래스 (0) | 2022.01.28 |
Java(21) - 컬렉션프레임워크 (0) | 2022.01.28 |
Java(20) - Generic 프로그래밍 (0) | 2022.01.28 |
Java(18) - Class 클래스 (0) | 2022.01.28 |
댓글