절차지향과 객체지향
절차 지향 프로그래밍 (Procedure Programming)
Top-Down 방식으로 접근하며 순차적인 처리가 중요시 되어 프로그램이 전체적으로 연결되도록 만드는 프로그래밍 기법이다. 대표적인 절차지향 언어는 C언어가 있다. 함수로 부터 데이터를 받아서 기능을 구현하는 방식으로 진행된다. 절차적 프로그래밍 이라는 말이 더 정확하다. 코드의 가독성이 좋고, 실행속도가 빠르다는 장점이 있지만, 유지보수 및 디버깅이 어렵다.
객체지향 프로그래밍 (Object Oriented Programming)
Bottom-Up 방식으로 접근하며, 데이터와 절차를 하나의 덩어리(Object)로 묶어서 처리한다. 모듈화 및 캡슐화로 유지보수에 용이하며, 코드의 재사용성이 높다. 처리속도가 상대적으로 느리고, 많은 양의 메모리를 사용한다는 단점이 있다. 객체지향에서는 다음과 같은 특성이 있다.
추상화 (Abstraction)
객체들의 공통적인 특징들을 묶는 것이다.
캡슐화 (Encapsulation)
데이터와 함수를 하나로 묶은것을 의미한다. 캡슐화된 객체의 세부 내용은 정보 은닉이 되어 변경시 오류발생이 적다. 캡슐화된 객체들은 재사용이 용이하다.
상속성 (Inheritance)
이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것이다. 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스에서 사용가능하다. 새로운 속성과 연산을 추가할수 있다.
다형성 (Polymorphism)
한 객체가 다른 형태의 객체로 재구성되는 것이다. 오버라이딩과, 오버로딩이 있다. 오버라이딩은 부모클래스의 함수를 재정의 하는 것이고, 오버로딩은 같은 이름의 함수를 여러개 정의하는 것이다.
반응형