+ 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, 즉, 세부사항이 아직 들어가지 않은 청사진으로 볼 수 있고,
⇒ 여기세 우리가 원하는 세부사항을 class의 constructor에 기입하면 ⇒ 각 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 갤럭시
'Dev > SW Engineering' 카테고리의 다른 글
8. Inheritance Patterns - Subclassing, Prototype chain (0) | 2020.05.30 |
---|---|
7. Inheritance Patterns - Instantiation Patterns (0) | 2020.05.24 |
5. Data Structure - Time Complexity (0) | 2020.05.24 |
5. Data Structure - Graph, Tree, BST (0) | 2020.05.24 |
4. DataStructure - Linked List, Hash Table (0) | 2020.05.24 |