동캄의 코딩도장

Quest 4 checklist 본문

WebDevCurriculum

Quest 4 checklist

동 캄 2023. 3. 9. 09:29

객체지향 프로그래밍은 무엇일까요?

  • 명령어 기반이 아닌 객체 기반으로 프로그래밍 하는것을 의미한다.

#으로 시작하는 프라이빗 필드는 왜 필요한 것일까요? 정보를 은폐(encapsulation)하면 어떤 장점이 있을까요?

---> 사용자의 임의의 접근을 막을 수 있고, 코드 작성 시 해당 요소의 오용을 막을 수 있다.

다형성이란 무엇인가요? 다형성은 어떻게 코드 구조의 정리를 도와주나요?

  • 객체 지향 프로그래밍에서 다형성이란 한 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것을 의미, 메서드 오버라이딩과 메서드 오버로딩이 그 예시
  • 결과적드로 코드의 중복을 줄이고, 관리를 용이하게 해준다. + 확장성이 뛰어나다.
  • 오버로딩(Overloading)은 기존에 없던 새로운 메서드를 정의하는 것이고,
  • 오버라이딩(Overriding)은 상속 받은 메서드의 내용만 변경 하는 것이다.

상속이란 무엇인가요? 상속을 할 때의 장점과 단점은 무엇인가요?

  • 상속이란 부모 클래스의 속성과 기능을 받아 동일하게 사용하는것이다.
  • 장점: 코드의 재사용성을 높이고, 부모 클래스만 변경해도 자식 클래스가 변경된다.
  • 단점
    1. 캡슐화가 깨지고 결합도가 높아짐
    2. 유연성 및 확장성이 떨어짐
    3. 다중상속에 의한 문제가 발생할 수 있음
    4. 클래스 폭팔 문제가 발생할 수 있음

OOP의 합성(Composition)이란 무엇인가요? 합성이 상속에 비해 가지는 장점은 무엇일까요?

  • 합성 기법은 기존 클래스를 상속을 통한 확장하는 대신에, 필드로 클래스의 인스턴스를 참조하게 만드는 설계다. 캡슐화를 유지할 수 있고, 결합도가 낮아진다. 또, 인터페이스 단에서 변경하면 되고, 런타임 중에 값을 변경할 수 있으므로 유연성 및 확장성이 높다. 상속의 단점인 다중상속과 클래스 폭팔 문제도 해결할 수 있다.

자바스크립트의 클래스는 어떻게 정의할까요?

  • Class로 선언하고, 그 안에 필드, 메소드를 정의한다.

프로토타입 기반의 객체지향 프로그래밍은 무엇일까요?

  • 프로토타입 패턴은 원본 객체를 새로운 객체에 복사하여 필요에 따라 수정하는 메커니즘을 제공한다. 클래스 기반 객체지향 프로그래밍과 달리 프로토타입 기반의 객체지향 프로그래밍은 객체를 복사(원형을 복사)하여 동작방식을 결정하고 사용하는 방식이다.

자바스크립트의 클래스는 이전의 프로토타입 기반의 객체지향 구현과 어떤 관계를 가지고 있나요?

  • class가 없던 시절의 자바스크립트는 객체를 생성하고, 이에 따른 속성과 행동 값을 부여해줬다. ES6이후 클래스 기능이 추가되면서 생성자를 통해 속성과 행동값을 정의 해주고, new를 통해 class를 생성하거나 상속 받을 수 있다.

'WebDevCurriculum' 카테고리의 다른 글

Quest6 checklist  (0) 2023.03.09
Quest5 checklist  (0) 2023.03.09
Quest3 checklist  (0) 2023.03.07
Quest2 checklist  (1) 2023.03.07
Quest1 checklist  (0) 2023.03.07