1. 절차지향언어(Procedural Programming)

절차지향 프로그래밍이란 ?

말 그대로 절차를 따라 물 흐르듯 개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법이다. 대표적으로 C, Fortran 등이 있습니다.

점차적으로 소프트웨어 언어의 발달과 컴파일러의 발달로 하드웨어가 소프트웨어의 발달을 따라오지 못하는 상황이 발생하게 됩니다. 이러한 이유 객체지향 언어가 등장하게 되는 계기가 됩니다.

1) 절차지향의 장점

2) 절차지향의 단점


소프트웨어의 위기

80년대 초 소프트웨어의 위기가 오면서 소프트웨어의 급격한 발전을 이루게 된다. 그로 인해 빠른 변화를 쫓아오지 못하고 복잡해진 프로젝트들은 더 이상 절차지향 프로그래밍을 통해 소화할 수 없었고 품질이 낮아졌다.  그에 대한 해결책으로 객체지향언어를 도입하게 된다.


2. 객체지향언어(Object-Oriented Language)

객체지향언어란?

프로그램을 다수의 객체로 만들고, 객체끼리 서로 상호작용하도록 만드는 프로그래밍 언어이다.

쉽게 생각해서 여러 컴퓨터 부품들을 구매하여 하나의 컴퓨터를 만들어 제대로 작동하도록 만드는 것입니다. 여기서 각 부품들이 객체가 됩니다,

대표적인 예로 JAVA, C++, C#, Python 등이 있다.

1) 객체지향언어의 특징( 캡슐화, 상속, 추상화, 다형성 )

관련된 데이터와 알고리즘을 하나로 묶어 하나의 캡슐처럼 만드는 것이다. 이러한 특징 때문에 데이터와 코드의 형태를 외부에서 알 수 없다. 캡슐화된 객체들은 다른 프로그래머가 사용하기 편리하고 수많은 테스트와 디버그를 마쳤기 때문에 안심하고 사용할 수 있다.

상위 클래스의 모든 것을 하위 클래스가 모두 이어 받는것을 말한다. 즉, 부모가 자식에게 물려주듯이 부모의 특징을 자식에게 모두 물려준다. 위에서 말한 기존 코드를 재활용해서 사용하는 것을 의미하기도 한다.

객체의 공통적인 속성과 기능을 추출하여 정의하는 것.

즉, 실제로 존재하는 객체들을 프로그램으로 만들기 위한 공통적인 특성을 파악해서 필요없는 특성을 제거하는 과정을 가르킨다.

상속과 연관된 개념으로 하나의 객체가 다른 여러 객체로 재구성 하는 것을 말한다.

서로 다른 타입에 속하는 객체들이 같은 이름의 멤버 함수에 응답하여 서로 다른 동작을 보여주는 것이 가능하다.  그로 인해 코드가 더 간단해지는 효과가 있다.

JAVA의 오버로드(Overload) 또는 오버라이드(Override)이 다형성의 대표적인 예라 할 수 있고, 이것을 구현하는 것을 오버로딩(Overloading)과 오버라이딩(Overriding)이라 한다.

2) 객체지향의 장점

3) 객체지향의 단점