TIL OOP(Object Oriented Programming) #20201209

JongGwon Seon·2020년 12월 9일
0

OOP

Object Oriented : "객체 위주"라고 생각하는 것이 편하다.

Object Oriented Programming : "객체 위주로 프로그래밍"한다.

KeyWord#

#Class(클래스)

#Object(오브젝트,객체)

#Encapsulation(캡슐화)

#Inharitance(상속성)

#Polymorphism(다형성)

Class = 추상

1. Class(클래스)는 표현 대상의 특징에 대해 서술한다.

2. Object(오브젝트)는 클래스의 instance이다. 즉, 클래스가 실체로 만들어진 것.

class = concept(개념) = type(타입)

object = instance(실체) = variable(변수)

Object = 실체(instance)

1. 오브젝트는 데이터와 데이터의 조작의 묶음, 그 모양은 클래스에 서술 돼 있음.

Encapsulation(캡슐화)

1. '데이터'와 '데이터를 다루는 방법'을 묶는 것, 그리고 묶어서 이름을 부여하는 것.

즉 , 추상화(abstraction)

2. Data + operation on data

Inharitance(상속성)

1. 하나의 클래스가 가지고 있는 특징(data, operation)들을 그대로 다른 클래스가 물려 받는 것.

2. 계층의 의미도 가짐.

Polymorphism(다형성)

1. 다형성(polymorphism; 폴리모피즘)은 "여러 형태"를 나타내는 그리스어.

2. 상속성의 계층을 따라서 각 클래스에 동일한 이름의 메소드를 사용할 수 있는 것.

즉 , 같은 명령을 각기 다른 오브젝트에 줄수 있다는 뜻.

장점

  1. 자연스런 모델링 (Natural Modeling of Problem)
  2. 생산성 향상 (Higher Productivity), 직관적인 코드 분석 가능;
  3. 점진적 개발 (Incremental Development)
  4. 견고한 의미적 모델링 (Stable Semantic Modeling)
  5. 명확한 인터페이스 기술 (Clear Interface Description)
  6. 보안 (Secure System)
  7. 유지보수의 용이성 (Better Maintainability)

위의 장점들을 관통하는 객체 지향 프로그래밍의 중요한 특성은 강한 응집력(Strong Cohesion)과 약한 결합력(Weak Coupling)을 지향한다는 점이다.

소프트웨어 공학에서 말하는,

응집력(cohesion) : 프로그램의 한 요소가 해당 기능을 수행하기 위해 얼마만큼의 연관된 책임과 아이디어가 뭉쳐있는지를 나타내는 정도. 프로그램의 한 요소가 특정 목적을 위해 밀접하게 연관된 기능들이 모여서 구현되어 있고, 지나치게 많은 일을 하지 않으면 그것을 응집력이 높다고 표현한다.

결합력(coupling) : 프로그램 코드의 한 요소가 다른 것과 얼마나 강력하게 연결되어 있는지, 얼마나 의존적인지를 나타내는 정도. 결합력이 낮다는 것은 한 요소가 다른 요소들과 관계를 크게 맺고 있지 않은 상태를 의미한다.

profile
안녕하세요 초심자입니다!

0개의 댓글