7월 19일 월요일 TIL

김병훈·2021년 7월 19일
0

til

목록 보기
38/89

객체 지향 프로그래밍 OOP

class

하나의 모델이 되는 청사진이다. 일종의 원형으로, 객체를 생성하기 위한 아이디어나, 청사진을 의미한다. 클래스는 객체를 만들기 위한 생성자(constructor) 함수를 포함한다. 이 생성자 함수를 통해서 속성을 넣어줄 수 있다.

function Car(color) {}

/* ES6에서는 class라는 키워드를 사용해서 정의할 수도 있다.

class Car {
  constructor(brand, name, color){
  // 인스턴스를 만들 때 사용하는 코드
  }
}

instance

청사진을 바탕으로 한 객체를 만드는 프로그래밍 패턴이다. 클래스의 사례이다.

let avante = new Car('blue');

method

"객체에 딸린 함수" 이다. 속성과 다르다. 클래스에 속성과 메소드를 정의하고 난 후 , 인스턴스에서 사용한다.

class Car // Name of class 

color; price; speed; // properties / Attribute 고유의 속성


Start();
Backward();
Forward();
Stop(); // Methods / Behaviours 자동차의 기능

this라는 키워드는 무엇일까

객체지향 프로그래밍에서는 필수적이라 알아야한다.
this는 인스턴스 객체를 의미한다. 매개변수로 넘어온 값들은 인스턴스 생성시 지정하는 값이며, this에 할당하는 것은 만들어진 인스턴스에 해당 값들을 부여하겠다는 의미이다.

함수가 실행될 때, 해당 스코프마다 생성되는 고유한 실행 context new키워드로 인스턴스를 생성했을 때는, 해당 인스턴스가 바로 this의 값이 된다.

prototype은 무엇일까

모델의 청사진을 만들 때 쓰는 원형 객체 이다. original form

constructor란 무엇일까

인스턴스가 초기화 될 때 실행하는 생성자 함수이다.

절차적언어

초기의 프로그래밍 언어를 의미하고, 순사적인 명령의 조합이다. 초기의 C,포트란 등의 언어는 객체 지향의 개념이 없는 절차 언어였다.

객체 지향 언어

  • class라고 부르는 대이터 모델의 청사진을 사용해서 코드를 작성한다.
  • 현대의 언어들은 대부분 객체 지향의 특징을 가지고 있다.
  • jS또한 객체 지향언어는 아니지만 그렇게 작성 가능하다.

객체 지향의 컨셉

question
1. 추상화와 캡슐의 다른점은?
=> 캡슐화가 코드나 데이터의 은닉에 집중되어 있다면, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메소드등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.
2. interface란 무엇인가?
=> 클래스를 정의할 때 , 메소드와 속성만 정의한 것을 의미한다. 이게 추상화의 본질이다.
3. JS에서 class 키워드를 사용하면, method 은닉이 가능한가?

  • 캡슐화 => 코드가 복잡하지 않게 만들고, 재사용성을 높인다.
    • 데이터와 기능을 하나의 단위로 묶은 것이다.(객체 안에 넣어서 묶음)=> 속성과 메소드들이 느슨하게 결합된다. 그런데 코드 실행 순서에 따라 코드를 작성하는 것이 아닌, 코드가 상징하는 실제 모습과 유사하게 코드를 모아 결합하는 것을 의미한다.
    • 은닉: 구현은 숨기고, 동작은 노출시킨다. => 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것을 의미한다.
    • 느슨한 결합에 유리하다 => 언제든지 구현 수정 가능.
  • 상속 => extends super 키워드로 상속을 구현한다.
    • 기본클래스의 특징을 파생 클래스가 상속받는 것을 의미한다.(부모 -> 자식)
    • 사람클래스에서 학생클래스를 추가하는데 새로 다 재구현하려면 비효율적이라 사람클래스 속성/메소드를 상속받고 학생에 필요한 속성/메소드를 추가만 할 뿐이다.
  • 추상화 => 코드가 복잡하지 않게 만들고, 단순화된 사용으로 인해 변화에 대한 영향을 최소화 한다.
    • 내부 구현은 엄청 복잡한 반면, 실제로 노출되는 부분은 단순하게 만든다는 것을 의미한다.
    • 예를 들어 전화기 안은 실제로 복잡한 구성으로 만들어져 있는데, 실제로 우리가 사용할 때는 수화기를 들고 버튼을 눌러서 해결하는 것으로 interface를 단순화 할 수 있다.
  • 다형성
    • 다양한 형태를 가진다는 것을 의미한다. 뭐 말하다라는 동작이 입으로 소리를 내는 것인데 동물들도 모두 다른 소리를 내듯이, 같은 메소드라도, 다른방식으로 구현될 수 있다는 것이다.
profile
블록체인 개발자의 꿈을 위하여

0개의 댓글