ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 22. Review
    개발자 수업/Java 2021. 10. 18. 18:26

    1. 객체지향 프로그래밍
        1) 추상화(abstraction)와 일반화
            - 어떤 영역에서 필요로 하는 속성이나 기능을 추출하는 작업
            - 데이터를 구조화하고 표현하는 방법에 대한 추상화
            - 처리 과정에 대한 추상화
            - 추상화의 의도는 단순화이며 일반화의 의도는 공통점을 뽑아내는 것
        2) 캡슐화(encapsulation)
            - 데이터를 감싸서 외부에서 사용 가능한 부분만 제공(information hiding)
            - 사용하는 코드(클라이언트 코드)가 세부적인 사항을 알 필요가 없음
            - 단순한 접근을 제공하여 오류가 생길 부분을 감소화
            - UML    
                - (private) 나만 볼 수 있는 것(같은 클래스 내부에서만 접근 가능)
                # (protected) 같은 패키지나 부모와 자식에게만 접근 가능(상속관계의 클래스만 접근 가능)
                + (public) 누구나 접근 가능(클래스 내부나 외부에서 접근 가능)
                ~ (pakege) 같은 패키지 접근 가능
        3) 상속성(inheritance)
            - 일반적인(general) 개념의 객체에서 보다 구체적인(specific) 개념의 객체의 관계를 표현
            - 상위 클래스의 속성과 기능을 하위 클래스에서 사용하거나 재정의할 수 있음
        4) 다형성(polymorphism)
            - 같은 메세지, 같은 구현에 대해 각 객체가 다른 표현과 결과를 나타내는 것
            - 클래스의 상속, 인터페이스의 구현 시에 다른 구현을 가진 클래스들이 상위 타입으로 업캐스팅이 됨
            - 이 때 각 클래스의 오버라이딩한 메서드가 존재하는 경우 (비록 상위 타입으로 선언된다 하더라도) 각기 다른 인스턴스의 메서드가 호출됨

    2. 객체지향 설계
        - 잘 만들어진 소프트웨어는 응집도는 높고 결합도는 낮아야 함
        1) 응집도
            - 하나의 모듈, 객체 내부의 요소들 간의 연관성
            - 하나의 책임을 구현하는 하나의 객체는 높은 응집성을 가짐
        2) 결합도
            - 객체 상호 간의 연관 관계
            - 결합도가 높으면 하나의 객체를 수정할 때마다 다른 객체도 수정해야 함

    3. 추상 클래스(Abstract Clas)
        - 추상 메서드를 하나 이상 가지고 있는 클래스
        - 인스턴스화 할 수 없음
        - 추상 메서드는 모든 하위(파생된) 클래스가 반드시 추상 메서드를 재정의 해야 함

    4. 인터페이스
        - 서로의 정보를 교환하기 위한 일종의 공유된 접촉점
        - 보통 interface 키워드로 정의
        - 클래스끼리는 다중 상속을 지원하지 않지만 인터페이스를 사용하면 여러 인터페이스로부터 상속하는 것이 가능함

    5. 템플릿 메서드 
        1) 템플릿 : 틀이나 견본을 의미
        2) 템플릿 메서드 : 추상 메서드나 구현된 메서드를 활용하여 전체의 흐름(시나리오)를 정의해놓은 메서드, final로 선언하여 재정의 할 수 없게 함
        3) 템플릿 메서드 패턴
            - 디자인 패턴의 일종
            - 프레임워크에서 많이 사용되는 설계 패턴
            - 추상 클래스로 선언된 상위 클래스에서 추상 메서드를 이용하여 전체 구현의 흐름을 정의하고 구체적인 각 메서드 구현은 하위 클래스에 위임
            - 하위 클래스가 다른 구현을 했더라도 템플릿 메서드에 정의된 시나리오대로 수행됨
            - 상위 클래스에서는 전체적인 흐름을 구현하고 구체적인 처리는 하위 클래스단에 위임

    '개발자 수업 > Java' 카테고리의 다른 글

    24. 내부클래스  (0) 2021.10.19
    23. UML  (0) 2021.10.18
    21. 컬렉션 프레임워크  (0) 2021.10.14
    20. Generic 프로그래밍  (0) 2021.10.14
    19. Wrapper 클래스  (0) 2021.10.14

    댓글