NullNull

객체지향 언어의 특징과 설계 원칙 본문

프로그래밍 언어/JAVA

객체지향 언어의 특징과 설계 원칙

KYBee 2022. 9. 29. 23:29

객체지향 언어의 특징

  1. 캡슐화 : 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것
  2. 추상화 : 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것
  3. 상속성 : 상위 클래스의 특성을 하위 클래스가 이어 받아서 재사용하거나 추가, 확장하는 것
  4. 다형성 : 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것. 하나의 객체가 여러 형으로 나타날 수 있는 것
    1. 오버로딩 : 같은 이름을 가지는 메서드를 여러개 두는 것 (정적 다형성)
    2. 오버라이딩 : 상위 클래스로부터 상속받은 메서드를 하위 클래스가 재정의 하는 것 (동적 다형성)

 

객체지향 설계원칙 (SOLID)

  1. SRP: Single Responsibility Principle 단일 책임
    1. 하나의 클래스는 한 가지의 책임만을 가져야 한다.
    2. 클래스를 수정할 때에도 그 클래스와 관련된 이유여야 한다.
  2. OCP: Open Closed Principle 개방 폐쇄 원칙
    1. 확장에는 열려있고 수정에는 닫혀있어야 한다.
    2. 요구사항이 변경될 때 새로운 동작을 추가하여 애플리케이션의 기능을 확장한다.
    3. 기존의 코드를 수정하지 않고 애플리케이션의 동작을 추가하거나 변경할 수 있다.
  3. LSP: Liskov Substitution Principle 리스코프 치환 원칙
    1. 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
    2. 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
  4. ISP: Interface Segregation Principle 인터페이스 분리원칙
    1. 하나의 일반적인 인터페이스보다 구체적인 여러 개의 인터페이스를 만들어야 한다.
    2. 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리하여 목적과 용도에 적합한 인터페이스만을 제공한다.
  5. DIP: Dependency Inversion Principle 의존 역전 워칙
    1. 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향받지 않게 한다.
    2. 고수준 모듈은 저수준 모듈의 변화에 대한 구현으로부터 독립되어야 한다.
    3. 고수준 모듈 : 인터페이스와 같은 객체의 형태나 추상적 개념
    4. 저수준 모듈 : 구현된 객체

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

ObjectMother 패턴 적용하기  (0) 2024.04.04
간단한 Unit Test 작성하기  (0) 2024.04.04
예외 처리  (0) 2022.08.14
Abstract class vs Interface  (0) 2022.08.14
JAVA 노드 스트림 & 보조 스트림  (0) 2022.07.31
Comments