Top-Down 방식으로 접근하며 순차적인 처리가 중요시 되어 프로그램 전체적으로 연결되도록 만드는 프로그래밍 기법
장점
단점
Bottom-Up 방식으로 접근하며, 데이터와 절차를 하나의 덩어리(Object)로 묶어서 처리하는 프로그래밍 기법
장점
단점
캡슐화(Encapsulation)
객체의 속성(Field)과 행위(Method)를 하나로 묶고, 외부로 부터 내부를 감싸 숨기는 것
추상화(Abstraction)
객체의 공통적인 속성과 기능을 추출하여 정의하는 것
상속(Inheritance)
상위 클래스의 모든 것을 하위 클래스가 새롭게 클래스와 행위를 정의 할 수 있는 것
다형성(Polymorphism)
하나의 메서드나 클래스가 있다고 가정할 때 이 메서드나 클래스를 다양한 방법으로 동작하게 하는 것
주어진 문제를 작은 문제로 나눈 후, 이 작은 문제를 순수 함수로 만들어 순수함수를 조합하여 프로그램을 만드는 선언형 프로그래밍 기법
어떻게 하는지보다, 무엇을 할건지 중심으로 설명하는 프로그램 방식
장점
단점
절차지향 vs 객체지향
객체지향 vs 함수형
특정 알고리즘이 어떤 문제를 해결하는데 걸리는 시간을 의미
같은 결과를 가져오는 코드라면 시간 복잡도가 작을수록 더 효율적인 알고리즘이라고 할 수 있다.
작성한 프로그램이 얼마나 많은 메모리를 차지하는지 분석하는 방법
하지만 최근 컴퓨터 성능의 발다라로 인해 메모리의 여유 공간이 충분하기 때문에 공간 복잡성의
중요성이 예전에 비해 많이 낮아짐
시간 복잡도의 경우 알고리즘을 잘못 구성했을 경우 결과값이 나오지 않거나 현저하게 느린속도가
나오기에 최근에는 공간복잡도 보다 시간복잡도를 우선시하여 프로그램을 작성한다.