객체(Object)
- 의사나 행위가 미치는 대상 (사전적 의미)
- 구체적, 추상적 데이터의 단위 (학생, 회원, 생산, 주문, 배송)
객체지향 과 절차지향
![객체 지향과 절차지향](https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998992425B3768AA23)
출처: https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998992425B3768AA23
절차지향
- 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법
대표적인 언어: C언어
장점
단점
- 유지보수가 어려움
- 실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과 보장하기 어려움
객체지향
- 실제 세계를 모델링하여 소프트웨어를 개발하는 방법
(마치 컴퓨터 부붐을 하나씩 사다가 컴퓨터를 조립하는 것과 같은 방법)
객체지향의 3대 특성
- 캡슐화
- 캡슐화란 관련된 데이터와 알고리즘이 하나의 묶음으로 정리되는 것
- 상속
- 이미 작성된 클래스를 이어 받아서 새로운 클래스를 생성하는 기법으로 위에서 말한 기존 코드를 재활용해서 사용하는 것
- 다형성
- 하나의 이름으로 많은 상황에 대처하는 기법. 코드가 더 간단해지는 효과가 있다.
장점
- 코드의 재활용성이 높음
- 코딩이 절차지향보다 간편함
- 디버깅이 쉬움
단점
- 처리속도가 절차지향보다 느림
- 설계에 많은 시간소요가 들어감