아틴
Atin
아틴
전체 방문자
오늘
어제
  • 분류 전체보기 (460)
    • Devlopment (246)
      • 정리 글 (20)
      • MicroServices (0)
      • Reactive, Concurrenc.. (12)
      • Java (44)
      • Spring (20)
      • C,C++,Ruby,Python (52)
      • Mobile (39)
      • Web (35)
      • Tip & Info (14)
      • Unit Test (7)
    • Infra (44)
      • OS (21)
      • RDBMS (13)
      • NoSQL&Cache (5)
      • AWS (4)
    • Computer Science (11)
    • Etc (156)

블로그 메뉴

  • Home
  • Guestbook

공지사항

인기 글

태그

  • CSS
  • Dungeons & Dragons
  • Ruby on Rails
  • 자바
  • TRPG
  • Android
  • 정읍
  • 안드로이드
  • jsp
  • 해킨토시
  • Java
  • C
  • 아이폰
  • 던젼 앤 드래곤즈
  • Python
  • Linux
  • javascript
  • 여행
  • 전라도
  • mysql

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아틴

Atin

Computer Science

OOP(객체 지향 프로그래밍) 5원칙 및 특성

2017. 9. 30. 08:46
반응형

SOLID

  • 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것
  • 애자일 소프트웨어 개발 전반적 전략의 일부


 두문자 

 약어

 개념

 S

 SRP

 단일 책임 원칙 (Single responsibility principle)
 한 클래스는 하나의 책임만 가져야 한다.

 O

 OCP

 개방-폐쇄 원칙 (Open/closed principle)

 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.

 L

 LSP

 리스코프 치환 원칙 (Liskov substitution principle)

 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

 I

 ISP

 인터페이스 분리 원칙 (Interface segregation principle)

 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.

 D

 DIP

 의존관계 역전 원칙 (Dependency inversion principle)

 추상화에 의존해야지, 구체화에 의존하면 안된다

 의존성 주입은 이 원칙을 따르는 방법 중 하나



OOP 특성

추상화 (Abstraciton)

  • 공통의 속성이나 기능을 묶어 이름을 붙이는 것
  • 객체 지향적 관점에서 클래스를 정의하는 것
  • 추상화는 다른 객체들과 구분되는 핵심적인 특징들에만 집중함으로써, 복잡도를 관리할 수 있도록 함

캡슐화 (Encapsulation)

  • 실제로 구현되는 부분을 외부에 드러나지 않도록 캡슐로 감싸 이용방법만을 알려주는것
  • 데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것.
  • 변수와 함수를 하나로 묶는 것
  • 또한 데이터를 절대로 외부에서 직접 접근을 하면 안되고 오로지 함수를 통해서만 접근해야하는데 이를 가능하게 해주는 것
  • 내부를 숨김으로써 내부를 좀더 자유롭게 변경할 수 있게 함
  • 정보 은닉Information Hiding) : 내부의 데이터나 함수를 외부에서 참조하지 못하도록 차단하는 개념 (캡슐화 개념)


상속성, 재사용 (Inheritance)

  • 상위 개념의 특징을 하위 개념이 물려받는 것
  • 재사용으로 인해 코드가 줄어듬
  • 하위 클래스에서 속성이나 오퍼레이션을 다시 정의하지 않고 상속받아서 사용함으로써 코드가 줄어듬


다형성 (Polymorphism)

  • 부모클레스에서 물려받은 가상 함수를 자식 클래스 내에서 오버라이딩 되어 사용되는 것
  • 다형성의 일반적인 의미는 '다양한 형태로 나타날 수 있는 능력'
  • 객체지향에서의 다형성은 '여러 클래스들이 동일한 이름의 오퍼레이션을 서비스하도록 하는 것'
  • 메소드 오버라이딩(Method Overriding) : 상위 클래스에 있고 상속받았으나 하위 클래스에서 다시 정의하는 것 (다형성)
  • 메소드 오버로딩(Method Overloading) : 동일한 이름의 메소드가 여러개 정의되어 있는데 단지, 매개변수의 타입에 따라 서로 구분되는 것 (다형성)


DRY 원칙

  • Don't Repeat Yourself
  • 반복하지 말라는 원칙
  • 중복코드를 만들지 말라는 것





Reference

[1] 위키 (https://ko.wikipedia.org/wiki/SOLID)


반응형
저작자표시 비영리 변경금지 (새창열림)

'Computer Science' 카테고리의 다른 글

JVM 메모리 구조 (JVM Memory structure)  (0) 2017.09.30
DB 트랜잭션 (Transaction)의 ACID 속성과 분산시스템 BASE 속성  (0) 2017.09.30
Java 자료구조 비교  (0) 2017.09.30
TCP vs UDP  (0) 2017.09.30
TCP 3 Way-Handshake & 4 Way-Handshake  (0) 2017.09.30
OSI 7 계층 (OSI 7 Layer)  (0) 2017.09.29
프로세스와 스레드(Process vs Thread)  (0) 2017.09.29
64비트와 32비트의 차이  (0) 2017.09.29
퀵 정렬, 퀵 소트(Quick Sort)  (0) 2017.09.21
계수정렬, 카운팅 소트(Counting Sort)  (0) 2017.09.21
    'Computer Science' 카테고리의 다른 글
    • JVM 메모리 구조 (JVM Memory structure)
    • DB 트랜잭션 (Transaction)의 ACID 속성과 분산시스템 BASE 속성
    • Java 자료구조 비교
    • TCP vs UDP
    아틴
    아틴

    티스토리툴바