Skip to content

Latest commit

 

History

History
64 lines (56 loc) · 3.15 KB

JavaOOP.md

File metadata and controls

64 lines (56 loc) · 3.15 KB

OOP란

  • Object Oriented Programming은 프로그래밍 방법론으로 기존의 절차적, 파일단위의 프로그래밍 스타일에서 완전히 분리된 프로그래밍 단위힌 Object(객체)라는 개념을 가지고 와서 프로그래밍 의 방법을 객체간의 소통의 개념으로 가져왔다

객체지향의 특징

  1. abstraction (추상화)
    • 여러 객체들의 공통된 특성을 묶어 상위개념으로 표현하는 것 : 예 ) 남자 와 여자의 추상적 객체 = 사람
  2. Polymorphism (다형성)
    • 객체를 표현하는 다양한 방식이 존재할수 있다. 예) 자식객체는 자식객체와 부모객체, 혹은 인터페이스로서 참조할수 있다.
  3. Encapsulation(캡슐화, 은닉화)
    • 숨길 부분과 밖으로 드러낼 부분을 조절할수 있다. 예) private 필드
  4. Inheritance (상속성)
    • 부모객체를 상속해서 자식객체를 만들수 있다 예) extends 키워드

Java는 완벽한 OOP인가??

  • 자는 '거의' 완벽한 OOP이다. 약간 부족...
  • OOP의 개념중에는 multiple inheritance(다중상속)이라는 개념이 존재한다. 관계가 없는 두 클래스를 상속해서 자식클래스를 만드는 것을 뜻한다.
  • 하지만 자바는 다중상속을 지원하지 않는다.
  • Java에서는 Interface 의 default method라는 방식으로 우회적으로 다중상속과 비슷한 방식을 지원하기는 한다. 하지만 이것 또한 진정한 의미의 다중상속은 아니다.

디자인 패턴 (Design Patterns) 이란??

  • 오랫동안 많은 사람들에 의해 좋다고 검증된프로그래밍 패턴, 문제의 타입별로 해결하기 좋은 프로그래밍 패턴들이 있다는 것이 알려졌다.

디자인 패턴 종류

  1. 생성 패턴
    • 추상 팩토리 패턴
    • 빌더 패턴
    • 팩토리 메서드 패턴
    • 싱글톤 패턴
  2. 구조 패턴
    • 어댑터 패턴
    • 브리지 패턴
    • 컴포지트 패턴
    • 데코레이터 패턴
    • 파사드 패턴
    • 프록시 패턴
    • 플라이웨이트 패턴
  3. 행위 패턴
    • 책임 연쇄 패턴
    • 반복자 패턴
    • 중재자 패턴
    • 전략 패턴
    • 커맨드 패턴
    • 방문자 패턴
    • 인터프린터 패턴
    • 메멘토 패턴
    • 옵저버 패턴
    • 사태 패턴
    • 템플릿 메소드 패턴
    • 널 오브젝트 패턴

객체 지향과 디자인 패턴의 관계

  • 디자인 패턴(어떤 프로그래밍 방법론에도 사용가능)이란 용어 자체는 OOP와 직접적인 관련 없음
  • 객체라는 개념이 가진 "변화적인 성질(변이성)" 때문에 잘 어울려져 사용된다
  • 일반적으로 객체는 때에 따라 생성되고, 객체의 성질이나 값을 부여 받고, 스스로 일을 수행하고, 다른 객체에게 값을 전달해준뒤, 소멸한다.
  • 메모리가 태어났다가, 변경되고, 소멸된다.

패턴 종류

    1. 생성 패턴 = 객체 생성에 대한 방법
    2. 구조 패턴 = 객체와 객체 사이의 상속/조합 관계 설정 방법
    3. 행위 패턴 = 객체가 특정 행동을 함으로서 다른 객체에 값을 전달하는 방법