KSCOLD LogoKSCOLD
Blog
Feed
Product
Admin Night
Vault
Guestbook
Info

Vault 목록

객체지향(Object Oriented Programming)

연결된 노트와 함께 읽기

객체지향(Object Oriented Programming)

2024년 3월 8일
  • 자바(Java)는 객체지향의 특징을 가지고 있다.

  • 객체지향이란 적절한 객체(Object)에게 적절한 책임을 할당하여 서로 메세지를 주고 받으며 협력하도록 하는것이다.

  • 즉, 실제세계를 객체(Object)라는 단위로 나누고 객체들간의 상호작용을 의미한다.

  • 점점 증가하는 SW 복잡도를 낮추기 위해 객체지향 패러다임이 대두되었다.

  • 클래스(Class)가 아닌 객체(Object)에 초점을 맞추는 것과 객체들에게 얼마나 적절한 역할과 책임을 할당하는지가 관건이다.

1. 추상화(Abstraction)

  • 불필요한 부분을 제거함으로써 필요한 핵심만 나타낸 것이다.
  • 흔히 일반화, 단순화의 의미와 같으며 복잡한 특징을 제거하는 것이다.

2. 다형성(Polymorphism)

  • 다양한 형태를 가지는 것이 다양성이다.
  • 하나의 타입으로 여러 종류의 객체를 참조하는 것이다.

3. 캡슐화(encapsulation)

  • 객체 내부의 세부사항을 외부로부터 감추는 것이다.
  • 인터페이스(Interface)만 공개해서 변경하기 쉬운 코드를 만들기 위함이다.

4.상속(Inheritance)

  • 부모로 부터 물려 받은 코드이다.

절차지향 프로그래밍 vs 객체지향 프로그래밍

  • 책임이 한곳에 집중되어 있는 방식(getter)은 절차지향이고, 책임이 여러 객체로 적절히 분산돼 있는 방식은 객체지향으로 볼 수 있다.

높은 응집도와 낮은 결합도

  • 마치 서랍정리처럼 비슷한 것들끼리는 응집도르르 높이기 위해 한 곳에 모아두고 다른 것들끼리는 분리를 시킨다는 게 높은 응집도와 낮은 결합도이다.
  • 이렇게 했을 때의 장점은 어떠한 변경이 생겼을 때, 변경의 포인트가 하나로 집중될 수 있다는 것이다.

객체지향 설계 및 구현

  • 객체지향 세계에서는 모든 객체가 능동적인 존재이다.
  1. 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민한다.
  2. 객체들 간의 관계를 고민한다.
  3. 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 한다.
  4. 협력을 설계 한다.
  5. 객체들을 포괄하는 타입에 적절한 책임을 할당한다.
  6. 구현한다.

Synapse Map Insight