← Back to list

객체 지향 프로그래밍

Objective-Oriented Programming은 프로그램을 명령어 또는 함수의 목록으로 보는 전통적인 명령형(Imperative Programming)의 절차지향적 관점에서 벗어나, 여러 개의 독립적 단위의 집합으로 이를 표현하려는…

The Possessor's View · 2024-01-05 08:36 · 0 claps · 2.1 min read
#객체지향 #object-oriented #objectorientedprogramming
Open on Medium ↗
Wiki topics: 💻 · Programming

객체 지향 프로그래밍

  • Objective-Oriented Programming은 프로그램을 명령어 또는 함수의 목록으로 보는 전통적인 명령형(Imperative Programming)의 절차지향적 관점에서 벗어나, 여러 개의 독립적 단위의 집합으로 이를 표현하려는 패러다임을 말한다.
  • 좋은 아키텍쳐를 만드는 일은 Objective-Oriented 설계 원칙을 이해하고 응용하는 데서 출발한다. 이의 본질을 설명하기 위해서 다음의 3가지 개념을 아는 것이 필수적이다. 바로 캡슐화(encapsulation), 상속(inheritance), 다형성(polymorphism)이다.

캡슐화(Encapsulation)

  • Objective-Oriented 의 주요 요소 중 하나로 캡슐화가 나오는 이유는 데이터와 함수를 쉽고 효과적으로 캡슐화하는 방법을 OO언어가 제공하기 때문이다.

완벽한 캡슐화란 어떤 구조체나 함수를 사용함에 있어서, 그 사용하는 대상자가 구조체나 함수에 대해 구현된 것에 대해 전혀 알 수 없는 것이라고 할 수 있다. 이는 C언어에서 완벽히 구현 가능하다.

  • 다른 OO 언어들의 경우 캡슐화를 거의 강제하지 않는다.

상속(Inheritance)

  • 상속이란 단순히 어떤 변수와 함수를 하나의 유효 범위로 묶어서 재정의하는 일이다.

다형성(Polymorphism)

다형성은 간단히 말해 하나의 객체가 여러가지 타입을 가질 수 있는 특성이라고 할 수 있다.

  • 다형성을 안전히 적용 가능한 메커니즘이 등장 전의 경우 위에서 아래로 흐르는 의존성의 방향(제어흐름)을 반드시 따라야 했다.
  • OO 언어는 상기의 제어흐름을 따라도 되지 않도록 해주는 의존성 역전(dependency inversion)을 가능하게 해 주었다. 이는 소스 코드 의존성을 어디에서든 역전시킬 수 있다는 뜻이다.

의존성 역전을 하기 위해서는 소스 코드 사이에 인터페이스를 추가함으로써 방향을 역전 시킬 수 있다.

  • 이를 통하여 특정 컴포넌트의 소스 코드가 변경되면, 해당 코드가 포함된 컴포넌트만 다시 배포해도 된다. 이를 배포 독립성(independent deployability)이라 부른다.
  • 또한 시스템의 모듈을 독립적으로 배포할 수 있게 되면, 서로 다른 팀에서 각 모듈을 독립적으로 개발할 수 있다. 이것은 개발 독립성(independent developability)라 부른다.

결론

  • OO란 다형성을 이용하여 전체 시스템의 모든 소스 코드 의존성에 대한 절대적인 제어 권한을 획득할 수 있는 능력이다.

메타데이터
post_id
317e2c83f8b1
slug
객체-지향-프로그래밍-317e2c83f8b1
url
https://medium.com/@possessor_view/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-317e2c83f8b1
canonical_url
https://medium.com/@possessor_view/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-317e2c83f8b1
author_url
https://medium.com/@possessor_view
status
ok
fetched_at
2026-07-13 06:23:13