Dev/SW Engineering

6. Inheritance Patterns - Object Oriented Programming

HJChung 2020. 5. 24. 16:38

+ 200819 

8/19일인 오늘에서 객체지향을 처음 배울 때 정리해 둔 아래의 글을 보니 많이 부족하고 부끄럽다. 

아래의 두 reference를 읽었는데, 

이를 정리해야할 것 같다. 

1. 

https://woowabros.github.io/study/2016/07/07/think_object_oriented.html

 

생각하라, 객체지향처럼 - 우아한형제들 기술 블로그

2년차 쪼랩이가 객체지향을 처음으로 접하고 공부를 하면서 나름대로 정리해보았습니다.

woowabros.github.io

 

2. 객체지향 생활 체조 - https://github.com/iamkyu/TIL/blob/master/.bak/object-calisthenics/object-calisthenics.md

 

 

 

1. OOP란

OOP(Object Oriented Programming)는 프로그래밍의 디자인 철학 중 하나이다.

 

자동차의 공통적인 속성, 기능이 있을 것이다. ⇒ 그러면 자동차라는 class를 하나 만들어두면, 이를 베이스로 여러가지 자동차 object를 뽑아낼 수 있다.

 

class 는 prototype, 즉, 세부사항이 아직 들어가지 않은 청사진으로 볼 수 있고,

⇒ 여기세 우리가 원하는 세부사항을 classconstructor에 기입하면 ⇒ 각 object를 만들 수 있다.

 

2. 용어정리

1) class:

class란 하난의 정형화된 모델을 만들어두고, 그 모델을 기반으로 한 instance(복제품)을 만들기 위해 사용한다. 마치 공장에서 같은 규격의 제품을 찍어내는 것과 비슷하다.
ex)  class: Iphone,

class Iphone 의 property: 액정, 스피커, 카메라, ... 등등,

class Iphone의 method: 알람이 울린다, 전화를 건다. 
2) object:

class로부터 만들어진 복제품을 선언한 것

ex) object1: Iphone iphone6,

object2:  Iphone iphoneSE,

object3: Iphone iphone11 ...
3)  instance:

class로 부터 만들어진 복제품인 object에 new와 같은 연산자를 통해 실체화 된 것
ex) instance1: Iphone iphone6 = new Iphone() ,

instance2: Iphone iphoneSE = new Iphone(),

instance3: Iphone iphone11  = new Iphone()...
4)  constructor:

객체를 만드는 역할을 하는 함수

 

3. OOP의 기본 컨셉

1) Encapsulation: 여러 속성을 class내에 모아두는 것.

ex) 절차 지향적 프로그래밍의 예

let screen = SSD;
let camera = 3000000;
let album = 0;

function takePicture(album){
	album++;
}

ex) 객체 지향적 프로그래밍의 예

let IPhone = {
	screen = SSD;
    camera = 3000000;
    album = 0;
    
    takePicture: function(){
		return this.album++;
	}	
};
IPhone.takePicture();
    

Reduce complexity + increase reusability 한 특징이 있다. 

 

2) Abstraction: 속은 매우 복잡하게 되어 있는데 사용자가 보는건 매우 간단하게 보이는 것

3) Inheritance: 부모(Basic class)의 속성을 물려받는다.

ex) 아이폰이라는 class는 전화라는 class의 특징을 상속 받은 것이라고 볼 수 있다.

class 전화 ----상속----> class 아이폰

class 전화 ----상속----> class 갤럭시

 

4) Polymorphism: 모든 공동된 특징들은 부모가 있고, 이 걸 상속받고, 각각의 고유한 특징만 설정해주어 다양한 구현이 가능해지는 것

ex) 아이폰이라는 class는 전화라는 class의 특징을 상속 받은 후 아이폰만의 고유한 특징을 수정 및 추가 한 것이라고 볼 수 있다. 

class 전화 ----상속--아이폰 특징 추가/수정--> class 아이폰

class 전화 ----상속--갤럭시 특징 추가/수정--> class 갤럭시