OO   Object-Oriented   객체 지향

(2021-01-18)

1. 객체 지향 (Object Oriented)

  ㅇ `논리데이터가 분리되어 있는 사상`에서 과감히 탈피하여,
     - `논리데이터가 결합된 객체들이 시스템을 이룬다는 견해`를 갖고,
     - 실세계의 문제를 분석하고, 이를통해 소프트웨어 체계를 잡는 철학/패러다임


2. 출현 배경

  ㅇ 기존 프로그래밍시, 프로그래머는 데이터프로시져(논리)를 별개로 선언하고 사용하게됨
     - 작은 프로그램일 경우에, 어떤 프로시져가 어떤 데이터 유형을 사용하는지 쉽게 알 수 있으나,
     - 프로그램 규모가 커지면, 둘 간의 관련성에 혼돈이 오기 쉬움

  ㅇ 이에따라, 데이터프로시져를 분리하지 않고 함께 생각하고 작성할 수 있다면 ,
     - 프로그램 작성자는 오류나 중복, 수정, 변경이 용이하게 됨
  
  ㅇ 즉, 논리데이터를 결합시켜, 함께 생각하려는 생각의 출발점이, 객체지향 출현의 배경

  ㅇ 용어 유래
     - 1960년대 노르웨이의 K. Nygaard가 Simula 67 프로그래밍 언어를 개발하면서,
     - 객체(object)라는 개념을 사용한 데서 유래


3. 적용 분야 객체지향 프로그래밍객체지향 분석, 객체지향 설계객체지향 사용자 인터페이스객체지향 데이타베이스객체지향 운영체제4. 객체지향의 장점
 
  ㅇ 수정 혹은 보완이 필요 할 때 기존에 만들어 놓은 객체들을 재사용(Reusability) 가능

  ㅇ 사물,현상에 대해, 추상적/범용적(例,운송 수단), 구체적/한정적(例,특정 자동차)으로 다룰 수 있음

  ㅇ 클래스를 통해 계층적으로 분류할 수 있는 수단을 제공 (슈퍼 클래스,서브 클래스 등) 

  ㅇ 또한, 유지보수(Maintenance)성, 확장성(Scalability), 개발의 신속성, 실세계 접근,
           프로젝트(프로그램)의 대형화 등에서 유리


5. 객체지향의 주요 특징들추상화 (Abstraction)
     - 복잡한 실행 절차나 데이터를 하나로 묶어 단순화시키는 것

  ㅇ 캡슐화 (Encapsulation)
     - 복잡함을 감추고, 상호 영향을 작게하는 것

  ㅇ 상속성 (Inheritance)
     - 코드의 재사용 및 효과적인 확장 능력

  ㅇ 다형태성 (Polymorphism)
     - 문맥에 따라 다른 형태나 동작을 할 수 있는 능력

  ㅇ 동적 바인딩 (Dynamic Binding)
     - 실행 중간에도 연결된 속성 변경이 가능


6. 객체지향 설계의 5가지 기본 원칙 (SOLID)

  ㅇ SRP (Single Responsibility Prnciple)  : 단일 책임 원칙
     - 하나의 클래스,속성,메서드,패키지,모듈,컴포넌트,프레임워크 등에 단일 책임 만 관련시킴
  ㅇ OCP (Open Closed Principle)           : 개방 폐쇄 원칙
  ㅇ LSP (Liskov Substitution Principle)   : 리스코프 치환 원칙
  ㅇ ISP (Interface Segregation Principle) : 인터페이스 분리 원칙
  ㅇ DIP (Dependency Inversion Principle)  : 의존 역전 원칙

객체지향 프로그래밍
   1. 객체지향   2. 객체지향 프로그래밍   3. 메세지   4. 생성자   5. 접근 제한 수식자   6. 추상 클래스   7. 인터페이스  


Copyrightⓒ written by 차재복 (Cha Jae Bok)
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"