본 내용은 내일배움캠프에서 활동한 내용을 기록한 글입니다.
객체지향은 절차를 간소화하는 것이지, 결코 절차를 무시하는 것이 아님
데이터와 이를 처리하기 위한 기능들을 모듈 내부에 체계적으로 작성
자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음에 이들의 실행 순서와 흐름을 짜는 방식
데이터의 무결성을 보장하고 코드의 재사용성이 높음
절차지향은 전통적인 프로그래밍 방식
데이터와 이를 처리하기 위한 기능들을 별도로 분리해서 작성
프로그램의 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수를 설계하는 방식
프로젝트의 규모가 커질수록 구성 요소들 간의 결합도가 높아지고 데이터의 무결성을 보장하기 어려움
객체지향 프로그래밍은 데이터와 그 데이터를 처리하는 메서드가 같은 모듈 내부에 배치되는 프로그래밍 방식
코드의 좋은 가독성, 높은 재사용성, 쉬운 유지보수를 위해 사용
객체지향 프로그래밍 방식은 데이터와 기능이 밀접하게 연결되어 있기 때문에, 코드의 구조와 동작을 직관적으로 파악할 수 있음
만약 어떤 문제가 발생하면 빠르게 문제를 인지하고, 어떤 코드에서 오류가 발생했는지 빠르게 찾아보며, 오류를 빠르게 고쳐 개발하는 시간을 최대한으로 줄이는 것을 위해 사용함
캡슐화 (Encapsulation)
완벽한 캡슐화
를 지원하지 않기 때문에 언더바(_
)를 사용해서 일종의 규칙을 만들어 사용함상속 (Inheritance)
extends
를 통해 상속 관계를 표현추상화 (Abstraction)
Interface
)를 이용해서 공통적인 부분을 묶음Interface
)는 클래스를 정의할 때, 메서드와 변수만 정의해서 implements
를 사용하는 클래스에서 선언된 메서드나 변수의 구현을 강제하여 코드의 일관성을 유지함다형성 (Polymorphism)
단일 책임의 원칙 (Single Responsibility Principle, SRP)
개방-폐쇄 원칙 (Open-Closed Principle, OCP)
리스코프 치환 원칙 (Liskov substitution principle, LSP)
인터페이스 분리 원칙 (Interface segregation principle, ISP)
의존성 역전 원칙 (Dependency Inversion Principle, DIP)
오늘 끝내지 못한 강의를 시청 후 빨리 끝난다면 개인과제에 들어갈 예정
Layered Architecture Pattern
은 개인과제를 통해 사용하는 방법을 익힐 예정
오늘은 객체지향과 Layered Architecture Pattern
에 대해 학습함
객체지향과 절차지향의 차이는 면접에서 많이 나올 수 있기에 확실히 구분 지을 수 있어야 함
객체지향의 캡슐화, 추상화, 상속, 다형성은 정확히 말하면 자바스크립트로 모두 구현이 되지 않음
그렇기에 TypeScript
를 통해서 객체지향을 구현이 가능함
Layered Architecture Pattern
는 아직 생소하지만 가독성과 유지보수를 위한 과정이기에 반드시 필요할 것 같음