가. 구조화 프로그래밍 Structured Programming
'함수'와 구조체 등의 '구조'물로 프로그램 구조를 만드는 방법이다.
나. 객체 지향 프로그래밍 Object Oriented Programming
클래스 간 '관계', 객체 간 '관계'를 이용하여 프로그램 구조를 만드는 방법이다.
추상화 abstraction
데이터의 추상화 + 코드의 추상화 ---> 데이터의 추상화
기능에 관련 데이터도 특성으로 함께 묶는다.
은닉화 encapsulation
멤버변수를 멤버함수 뒤로 감춘다. 클래스를 경계로 변경의 국지화를 이루기 위해서다.
상속성 inheritance
공통된 속성을 부모클래스에 두고 자식 클래스는 이를 이어받아 작성한는 것이다. 코드의 효율적인 재사용을 위함이다.
다형성 polymorphism
같은 메시지에 다른 반응하는 것이다. 호출하는 측에 함수의 형태는 동일한데, 타입에 따라서 실제 동작이 다르다. 즉, 호출되는 함수의 종류가 다르다. 호출부의 코드를 일반화하는 것이다.