티스토리 뷰

객체지향? OOP(Object-Oriented Programming)?

객체지향이란 현실에 존재하는 사물을 있는 그대로 모델링하여, 행위와 속성을 정의하고 절차적이 아닌 객체가 중심이 되어 실제 사물이 동작하는 방식으로 설계하기 위해 등장한 개념이다.

사물에 대해서는 객체 Object라 부르며 해당 사물이 하는 행위를 Method로 정의하고 해당 사물이 가지는 속성을 변수 Variable라고 정의 한다. 실제 사물을 중심으로 설계하기 때문에 기존의 절차지향 보다는 조금 더 편리하게 설계가 가능해진다.

 

객체지향 4가지 핵심요소

  1. 캡슐화(Encapsulation)
    • 캡슐화는 객체의 속성(Variable)을 보호하기 위함이다.
    • 특정 속성에 직접 접근이 아닌 Method를 통해 접근할 수 있도록 한다.
    • 속성이 선언되었으나 상태를 변경하는 Method가 없다면 잘못 선언된 속성이며 자신이 가지고 있는 속성에 대해서는 상태를 변경하는 기능을 제공해야 한다.
    • 객체지향의 패러다임 중 하나인 추상화를 제공하고 재 사용성을 향상시킨다.(유지보수 효율 향상)
  2. 상속(Inheritance)
    • 객체지향에서의 상속은 속성의 상속이 아닌 하위로 내려가면서 구체화 시키는 것이다.
    • 최상위 클래스의 구조를 보고 하위 클래스의 동작을 이해할수 있기 때문에 프로그램 구조 이해가 용이하다.
    • 상속을 이용하여 해당 클래스에서 필요한 속성과 메소드를 모두 정의하지 않고 상속을 받아 사용할 수 있다.
    • 일관된 형태의 클래스 객체를 추가 할 수 있어 확장이 용이하고 유지보수서이 향상된다
  3. 다형성
    • 다형성은 하나의 개체가 여러 개의 형태로 변화 하는것을 말한다.
    • 자바의 오버라이딩을 통해 구현한다.
  4. 추상화
    • 추상화는 객체지향에서 모델링을 말한다.
    • 구체적으로 공통적인 부분과 특성을 분리해서 재조합 하는 부분이 추상화이다.

객체지향 설계 5원칙(SOLID)

좋은 소프트웨 설계를 위해서는 결합도(coupling)를 낮추고 응집도(cohesion)를 높여야 한다.결합도는 클래스간의 상호 의존 정도를 나타내는 것으로 결합도가 낮으면 상호 의존성이 줄어들어 객체의 재사용 및 유지보수가 유리하다.응집도는 클래스 내부에 존재하는 구성 요소들의 기능적 관련성으로 응집도가 높은 클래스는 하나의 책임에 집중하고 독립성이 높아져 재사용 및 유지보수가 용이하다.

  1. 단일 책임 원칙(SRP - Single Responsibility Principle)
    • 어떠한 클래스를 변경해야 하는 이유는 한가지 뿐이어야 한다.
    • 하나의 역할에 집중하여 변경시 연쇄 변경이 일어나지 않도록 해야한다.
  2. 개방 폐쇄 원칙(OCP - Open Closed Principle)
    • 자신의 확장에는 열려있고 수정에 대해서는 닫혀 있어야 한다.
    • 상위 클래스 또는 인터페이스를 중간에 둠으로써, 자신의 변화에는 폐쇄적이지만 인터페이스는 외부의 변화에 대해서 확장을 개방해 줄수있다.
  3. 리스코프 치환 윈칙(LSP - Liskov Substitution Principle)
    • 서브 타입은 언제나 자신의 상위 타입으로 교체 할 수 있어야 한다.
  4. 인터페이스 분리 원칙(ISP - Interface Segregation Principle)
    • 클라이언트는 자신이 사용하지 않는 메소드에 의존 관계를 맺으면 안된다.
  5. 의존 역전 원칙(DIP - Dependency Inversion Principle)
    • 자신보다 변하기 쉬운 것에 의존하지 말아야 한다.

 

 

'프로그래밍 > Java' 카테고리의 다른 글

[JAVA] 접근 제어자(Access modifier)  (0) 2021.06.25
[JAVA] GC(Garbage Collection)이란?  (0) 2021.05.28
[JAVA] JVM(Java Virtual Machine)이란?  (0) 2021.05.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함