객체지향프로그래밍

박성현·2020년 3월 21일
0

객체 지향 프로그래밍(OOP)

객체

예를 들어, 자동차가있다면 자동차 1대 1대를 객체라 할 수 있습니다.
차의 모양이 전부 같다고 하더라도 차 한대가 사라진다고 다른차도 없어지는게 아니기때문에 객체입니다.

클래스

자동차는 일반적으로 같은 속성을 가지고 있는데 여기서 속성이란 자동차의 색 , 바퀴 , 사이드 미러등을 의미합니다.
이러한 공통적으로 갖는 속성들을 모아서 정의내린 것이 클래스입니다.

즉 자동차라는 클래스는 색,바퀴,사이드미러 등의 속성이 존재하고 객체들은 각 속성의 모양이 다르기때문에 각 각 다른 객체로 분류된다고 하는것입니다.

객체 지향 프로그래밍(OOP)

프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식이다. 객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음으로 봐야 한다.

OOP의 특징

추상화

추상화는 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념입니다.
객체와 클래스의 관점에서 살펴보면
객체는 실제 그 모습이지만 클래스는 객체들이 어떤 특징이 있어야한다고 정의하는 추상화된 개념이라고 생각하면 될 것 같습니다.

캡슐화

캡슐화는 일반적으로 연관있는 변수와 함수를 클래스로 묶는 작업을 말합니다, 객체가 기능을 어떻게 구현 했는지 외부에 감추는 것 캡슐화만 잘해도 좋은 코드를 만들 수 있다고합니다, 보안적인 의미도 있습니다.

상속

앞서말한 자동차의 속성으로 자동차의 핸들,바퀴, 사이드 미러 등을 말하였는데 같은 자동차란 객체에는 이와같은 공통점이 있는데 그것은 클래스를 상속받았다고 표현할 수 있을것 같습니다,이처럼 공통된 요소를 상속받게 되면은 불필요한 코드의 중복을 없앨 수 있습니다.

다형성

다형성은 형태는 같지만 다른 기능을 하는 것을 의미합니다. 페라리 와 람보르기니는 바퀴가 있다는점에서 같은 클래스를 상속받았다고 할수있습니다, 하지만 페라리 와 람보르기니의 바퀴 모양은 다르겟죠 ?
이것을 '다형성'이라고 합니다.
그럼 다형성을 사용하면 좋은 점은 무엇일까요?같은 이름의 속성을 유지함으로서, 속성을 사용하기 위한 인터페이스를 유지하고, 메서드 이름을 낭비하지 않는다는 것입니다.

Functional

let Car = function(){
  let comeInstance ={};
  someinstnace.positon = 0;
  someinstance.move = function(){
  this.position += 1;
  }
  return someInstance
};

let car1= Car();
let car2= Car();
car1.move(); 
console.log(car1); // {position: 1, move: ƒ} 
console.log(car2); // {position: 0, move: ƒ}

Functional Shared

Prototypal, Preudoclassical

이 내용은 좀더 숙지가 필요할것같아 추후에 추가하겠습니다.

profile
FrontEnd Developer

0개의 댓글