객체지향 프로그래밍1

Jay·2020년 9월 9일
0

객채 지향 프로그래밍

(Object Oriented Programming)

1. 객체지향

1-1 정의

: 프로그램을 객체 (메소드, 데이터의 묶음) 라는 기본 단위로 나누고, 이 객체들의 상호작용을 서술하는 방식.
자바스크립트는 ProtoType을 이용하여 객체를 표현할 수 있다.

1-2 절차지향과 어떤점이 다른가?

[ 절차지향 : 명령어의 실행순서를 기반 ] VS [객체지향 : 기능을 모듈로 묶어 모듈을 재활용 ]
절차지향: 실행순서(절차)가 더 중점이 된다.
객체지향: 객체의 종류와 속성이 더 중점이 된다.


2. 객체지향의 4대속성

1. 추상화(Abstraction) :

객체들이 가진 공통 특징을 뽑아내는 것
ㄴ 완전하지 않더라도 틀을 어느정도 생각하고 시작하며, 점점 구체화 시킨다.

음료가 공통적으로 가진 속성 : 가격, 종류(탄산,이온 등)데이터(변수)를 추상화

  • 이제 종류, 용량등 여러 조건을 고려하여 가격을 설정하면 된다.

메소드: 돈을 넣는다, 음료가 나온다. 함수 추상화

  • 돈을 넣는다( 그렇지만 지폐가 구겨져있으면, 돈을 받지 않고 다시 내뱉는다.)
  • 음료가 나온다( 유리병이면 깨지지않게 천천히 나온다 )
  • 음료가 나온다( (hot선택) = 뜨거운 제티, (cool선택) = 시원한 제티 )

2. 캡슐화(Encapsulation) :

접근 권한을 통해 원치않는 실수, 외부의 접근으로부터 데이터와 함수들을 보호할 수 있다.

  • 자판기 음료의 가격을 나 말고도 수정할 수 있다면?
  • 천원짜리 지폐를 만원으로 인식하도록 조작 후, 음료수를 뽑는다면?
    ㄴ 아마 나는 장사 접어야 할 것이다... 😭

3. 상속(Inheritance) :

Class의 프로퍼티(함수,데이터)를 다른 class에 물려주거나, 물려받을 수 있다.
ㄴ 음료자판기에 커피벤딩머신 기능까지 있다면??

어? 함수 그대로 쓰면 되겠네?? 😏 : 돈을넣는다, 음료가 나온다
목록: 이미 구현되어있으니 이름만 바꾸면 되겠구나?👏 (블랙,밀크커피,유자차,우유 등)

4. 다형성(Polymorphism) :

다양한 형태로 나타날 수 있다
ㄴ 부모 클래스를 활용해서 자식의 클래스에도 재정의하여 이용 가능 (오버라이딩: overriding)

음료자판기의 특성을 커피자판기에도 구현하고, 내용을 재정의하여 쓰면된다.
음료 종류 > 커피 종류 |||||| 돈을 넣는다 > 돈을 넣는다( 동전만 가능하다 )

오버라이딩

class MusicPlay {
 		play() {
        	console.log('노래를 재생합니다');
        }
}

class FavoritePlay extends musicPlay {
  		play() {
           	console.log('내 취향의 노래를 재생합니다');
        }
}

let favoritePlay = new FavoritePlay()
favoritePlay.play(); // 내 취향의 노래를 재생합니다.
profile
programming!

0개의 댓글