공부한 내용정리/Java

객체지향의 특징과 5가지원칙

JinHee Han 2020. 10. 6. 01:37

OOP(객체지향 프로그래밍)의 3가지 특징

캡슐화 

  • 데이터와 데이터를 처리하는 메소드의 형태를 하나의 단위로 묶는 것

  • 캡슐화로 인해 클래스의 외부에서 클래스 멤버변수에게 직접 접근하여 값을 변경할수 없음

  • 외부에서 접근할 수 있도록 정의된 getter, setter을 통해서만 접근이 가능하다.

  • 캡슐화의 결과로 정보은닉이 가능해진다. (프로그램 변경시에 발생하는 오류를 줄일 수 있다.)

상속 

  • 상위 클래스의 멤버 메소드들을 하위 클래스가 사용할수 있는 특징

  • 부모 클래스의 생성자, 초기화 블럭은 상속되지 않는다.

  • 모든 클래스는 Object 클래스의 후손 클래스다.

  • 반복되는 코드를 줄여서 개발시간을 줄일 수 있고 확장성이 용이해진다.

다형성

  • 한번의 명령으로 여러 객체가 명령에 맞는 각각의 역할을 수행할수 있는 특징

  • 하나의 객체가 여러가지 타입을 가질수 있는 특징

   업 캐스팅 : 서브 클래스(자식 클래스)의 객체가 수퍼 클래스(부모 클래스) 타입으로 형변환 되는 것

   다운 캐스팅 :  업 캐스팅 되었던 수퍼 클래스(부모 클래스) 가 다시 자식 클래스의 타입으로 돌아오는 것

 

+ 추상화

  • 객체에서 사용될 공통적인 메소드나 멤버를 추출하는 작업

객체지향의 5원칙(SOLID : 솔리드)

  • SRP(단일 책임의 원칙: Single Responsibility Principle)
  • OCP(개방폐쇄의 원칙: Open Close Principle)
  • LSP(리스코브 치환의 원칙)
  • ISP(인터페이스 분리의 원칙: Interface Segregation Principle)
  • DIP(의존성 역전의 원칙: Dependency Inversion Principle)