선언형과 함수형 프로그래밍
객체지향 프로그래밍
- 객체들의 집합으로 프로그램의 상호작용을 표현하며, 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식
- 설계에 많은 시간 소요 + 처리 속도가 다른 방식들에 비해 상대적으로 느림
- 특징
- 추상화 : 복잡한 시스템에서 핵심적인 개념, 기능을 간추려내는 것
- 캡슐화 : 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것
- 상속성 : 상위 클래스의 특성을 하위 클래스가 상속받아서 재사용/추가/확장 하는 것
- 다형성 : 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것
<aside>
🎊 오버로딩 : 같은 이름의 메서드를 여러개 선언(매개변수 다르게 등)
오버라이드 : 하위 클래스가 상위 클래스 메서드를 상속받아서 재정의하는 것
</aside>
- SOLID 설계 원칙을 지켜야함
- S - 단일 책임 원칙(SRP, Single Responsibility Principle) : 모든 클래스는 각각 하나의 책임만 가져야한다
- O - 개방/폐쇄 원칙(OCP, Open Closed Principle) : 유지 보수 사항이 생긴다면 코드를 쉽게 확장할 수 있고, 수정할 때는 닫혀 있어야 한다
- L - 리스코프 치환 원칙(LSP, Liskov Substitution Principle) : 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다
- I - 인터페이스 분리 원칙(ISP, Interface Segregation Principle) : 하나의 일반적인 인터페이스보다는, 구체적인 여러 개의 인터페이스를 만들어야 한다
- D - 의존 역전 원칙(DIP, Dependency Inversion Principle) : 자신보다 변하기 쉬운것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향받지 않게 해야한다
절차형 프로그래밍
- 로직이 수행되어야 할 연속적인 계산 과정으로 이루어져 있다
- 일이 진행되는 방식으로 그저 코드를 구현함
- 코드의 가독성이 좋음 + 실행 속도가 빠르다