객체지향과 절차지향

CUBE·2023년 10월 13일
0

CS 지식

목록 보기
5/10

절차지향이란 말 그대로 절차를 따라 흘러가는 데이터의 흐름 방식을 의미한다.
데이터와 함수가 분리되고 통일성이 없지만,
객체지향은 조금 더 모듈화되어 체계적인 흐름을 의미한다.

절차지향은 과도한 전역 변수의 사용, 스파게티 소스, 변경과 확장, 프로그램에 대한 이해가 어렵지만, 객체지향은 코드의 재사용성이 높다. 이러한 것을 OOP라고 칭한다.

절차지향은 프로그램의 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수들을 설계하는 방식이고,
객체지향은 반대로 자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음에 이들의 실행 순서와 흐름을 짜는 방식이다.

객체지향 프로그래밍의 개념[OOP]

캡슐화
데이터와 함수들을 객체 안에 넣어서 묶는다. 캡슐화된 객체들은 다른 프로그래머가 사용하기 편리하다. 또한 수많은 테스트와 디버그를 마쳤기 때매 안심하고 사용할 수가 있다.

정보 은닉
객체 간의 모든 통신은 함수 호출을 통해야 하며, 객체의 함수를 가지고 상호작용함으로서,
객체 내부 구현의 세부사항은 외부 세계로부터 감춰진다.
내부 데이터가 숨겨져 있다는 것은 프로그램의 다른 부분에 영향을 미치지 않고, 쉽게 변경될 수 있음을 의미한다.

상속성과 다형성
자식 클래스는 부모 클래스를 물려받으며, 확장 가능하며,
기존의 코드를 재사용하는 것이 가능하다.

서로 다른 타입에 속하는 객체들이 같은 이름의 맴버 함수에
응답하여서 서로 다른 동작을 보여주는 것이 가능하다.

쉬운 디버깅
절차지향 프로그램에서 하나의 변수를 100개의 함수가 사용하고 있고, 객체 지향 프로그램에서는
100개의 클래스와 각 클래스당 10개의 맴버 함수를 가지고 있다고 가정할 경우, 프로그램에 문제가 생겼을 시 클래스 안에 10개의 맴버 함수를 검사하는 편이 1000개의 함수를 사용하는 것보다 훨씬 낫다.

객체지향의 핵심은 "유언성" 이다. 유연성은 캡슐화, 추상화, 다형성을 이용해서 달성할 수 있다.

OOP 는 유연성을 가진다.

유연성은 캡슐화, 추상화, 다형성을 이용해서 달성된다.

상속은 캡슐화를 활용하고, 다형성은 상속을 이용해서 만들어진다.

캡슐화를 통해서 가시성(Visibility) 개념이 만들어지고, 클래스 개념이 만들어진다.

클래스는 타입과 필드, 그리고 메서드를 가지고 있다.

클래스 개념은 인터페이스(interface), 추상 클래스(Abstract Class), 구체 클래스(Concrete Class) 개념을 파생시킨다.

객체(Object)는 구체 클래스(ConcreteClass)가 가진 개념을 포함한다.

객체는 Identity를 가진다.(구체 클래스를 통해 클래스가 가진 개념도 가지게 도미ㅡ로 Method, Field, Type도 가지게 된다.)

메서드는 프로토타입을 가지며, 추상 메서드는 메서드의 일종이다.

필드는 Reference와 Primitive 로 나뉜다.

클래스, 메서드, 필드는 가시성을 가진다.

클래스는 상속 가능(Inheritable)하다.

메서드는 재정의 가능(Overridable)하고, 오버 로딩 가능(Overloadable)하다.

정리
절차지향 프로그래밍(Procedural Programming)

  • 전통적인 프로그래밍 방식
  • 데이터와 이를 처리하기 위한 기능들이 별도로 분리
  • 프로젝트 규모가 커질수록 연관있는 데이터들이 분산되며, 구서 요소들간의 결합도(Coupling)가 높아진다.
  • 데이터 무결성 보장이 어려워진다.
  • 개발 생산성이 크게 저하된다.

객체 지향 프로그래밍(Object-Oriented programming)

  • 관련된 데이터와 오퍼레이션을 그룹화하는 "객체" 위주의 프로그래밍 방식
  • 불필요한 결합도를 줄다.
  • 전체 데이터와 오퍼레이션들이 객체단위로 분할되기 때문에 부담이 적다.
  • 데이터 무결성 보장이 용이하다.
  • 개발 생산성이 떨어지지 않는다.
profile
엄마이오빠이상해

0개의 댓글