절차형 프로그래밍 [ procedural programming ]
- 어떻게(How)에 중점을 두고 프로그래밍을 하는 방식입니다.
- 실행 순서를 지정하게 되어 명령형 언어라고도 불립니다.
- 위에서 아래로 로직에 따라 코드의 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결됩니다.
- 코드로 원하는 결과를 달성해 나가는 과정에 중점을 두는 프로그래밍 방식입니다.
- 종류 : C, ALGOL, COBOL, FORTRAN
장점
- 모듈 구성이 용이하며 구조적인 프로그래밍이 가능합니다.
- 컴퓨터와 유사한 처리구조의 코딩 방식으로 실행 속도가 빠릅니다.
단점
- 코드가 길어지면 가독성이 떨어집니다.
- 유지보수가 어렵습니다.
- 코드의 실행순서가 정해져 있어, 코드의 순서 변동으로 인해 동일하지 않은 결과가 발생할 수 있습니다.
선언형 프로그래밍 [ declarative programming ]
- 무엇을(What)에 중점을 두고 프로그래밍을 하는 방식입니다.
- 필요한 것을 달성하는 과정을 하나하나 기술하는 것보다, 필요한 것이 어떤 것인지 기술하는데 중점을 두는 방식입니다.
- 절차형 프로그래밍이 추상화된 것입니다.
- 종류 : SQL, Prolog
객체 지향 프로그래밍 [ Object-Oriented Programming ]
- 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방식입니다.
- 종류 : C++, C#, Java, Python, Swift,,
특성
1, 추상화
- 객체들의 공통적인 특징을 도출하는 것
- 객체지향적 관점에서 클래스를 정의하는 것을 추상화라고 할 수 있습니다.
2, 캡슐화
- 실제로 구현되는 부분을 외부에 드러나지 않게 은닉할 수 있습니다.
- 객체가 독립적으로 역할을 할 수 없도록 기능을 하나로 묶어 관리하는 것
- 코드가 묶여있어서 오류가 없습니다.
3, 상속성
- 하나의 클래스가 가진 특징(함수, 데이터)을 다른 클래스가 그대로 물려받는 것
- 기존 코드를 재활용하는 방법으로 객체지향의 가장 중요한 기능 중 하나에 속합니다.
4, 다형성
- 약간 다른 방법으로 동작하는 함수를 동일한 이름으로 호출하는 것
- 동일한 명령의 해석을 연결된 객체에 의존하는 것
- 오버 로딩, 오버 라이딩
5, 동적 바인딩
- 가상 함수를 호출하는 코드를 컴파일할 때, 바인딩을 실행시간에 결정하는 것
- 파생 클래스의 객체에 대해, 기본 클래스의 포인터로 가상 함수가 호출될 때 일어납니다.
- 함수를 호출하면 동적 바인딩에 의해 파생 클래스에 오버 라이딩된 함수가 실행됩니다.
- 프로그래밍의 유연성을 높여주며, 파생 클래스에서 재정의한 함수의 호출을 보장합니다.
장점
- 코드 재사용 용이
- 유지보수 용이
- 대형 프로젝트에 유용하다.
단점
- 느린 처리 속도
- 객체에 따라 용량이 커짐
- 설계 시 많은 시간과 노력이 필요
내용 출처
https://sora9z.tistory.com/39
https://kevinkim95-dev.tistory.com/2
https://migoreng.tistory.com/97
http://www.incodom.kr/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5#h_45791da82d928e012cccde6bfb5b5d23
'iOS > iOS' 카테고리의 다른 글
tableView, collectionView (0) | 2022.03.12 |
---|---|
앱 시닝 [ App thinning ] (0) | 2022.03.11 |
동기/비동기, 직렬/동시 (0) | 2022.03.09 |
오버로딩 VS 오버라이딩 (0) | 2022.03.08 |
시뮬레이터로 할 수 없는 것 (시뮬레이터의 한계) (0) | 2022.03.07 |
댓글