프로그래밍에 필요한 코드는 데이터와 데이터를 조작하는 명령어로 나뉜다.
데이터와 데이터를 조작하는 명령어가 어떻게 구성되고 어떤 순서로 실행되는지에 따라 절차지향과 객체지향이 나뉜다고 생각한다.
절차지향 (Procedural Programming)
- 절차지향은 데이터와 데이터 조작 명령어가 순차적으로 실행되어진다.
- 프로그램의 구조가 데이터와 함수들로 이루어져 있다.
- 데이터와 함수를 개별적으로 관리해야한다.
- 코드가 직관적이어 이해하기 편리하다.
- 컴파일러가 코드를 최적화하기 쉬워 실행속도가 객체지향보다 빠르다.
- 프로젝트의 규모가 커질수록 코드가 길고 복잡해져서 유지보수가 어렵다.
- 함수를 이용하여 재사용할 수 있지만 함수들 간의 의존성이 높아 재사용성이 떨어진다.
- 대표적인 언어 : C 등
객체지향 (Object-Oriented Programming)
- 객체지향은 객체들 간의 상호작용이 이루어지면서 실행된다.
- 프로그램은 객체들로 이루어져 있으며 객체는 데이터와 데이터를 다루는 함수를 묶어서 관리할 수 있게한다.
- 하나의 클래스라는 틀을 만들고 틀을 통해 여러 객체(인스턴스)를 생성하여 프로그램에서 사용한다.
- 상속, 다형성, 캡슐화라는 특징들이 있고, 특징들을 잘 사용해야한다.
- 코드를 모듈화하여 사용하기 때문에 재사용성이 높다.
- 코드를 수정해야 할때, 관련 객체의 코드만 수정하면 되기 때문에 유지보수성이 뛰어나다.
- 자유도가 높아 확장성이 뛰어난 반면, 논리적인 설계가 비교적 어렵다.
- 대표적인 언어 : Java, C++, Python 등
내 생각
최근에는 절차지향보다는 객체지향 프로그래밍을 많이 하게되는 것 같다.
점점 유지보수와 재사용성에 대한 중요성이 높아지기 때문인것 같다.
절차지향, 객체지향 말은 많이 들었지만 그 특징에 맞는 프로그래밍을 잘하고 있는지 모르겠다.
클래스와 객체는 같은 개념인줄 알고 있었다...
개념 정리를 기회 삼아 조금 더 방향 잡힌 코딩을 해보아야겠다.
'CS 공부' 카테고리의 다른 글
[개념] REST API의 특징 및 API URL 작성법 (0) | 2024.06.15 |
---|---|
[개념] CI/CD 란? (0) | 2024.03.17 |
[개념] 번들링(Bundling)이란? (1) | 2024.03.14 |
[개념] SPA, MPA, SSR, CSR, SSG 개념 알기 (0) | 2024.03.12 |
[개념] Ajax(Asynchronous Javascript And XML)란? (0) | 2024.03.09 |