Skip to content

Latest commit

 

History

History
56 lines (37 loc) · 3.95 KB

File metadata and controls

56 lines (37 loc) · 3.95 KB

객체 지향 프로그래밍


객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임의 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 한다.


기본 구성 요소

  • 클래스(Class)

    • 같은 종류(또는 문제 해결을 위한)의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형(user define data type)이라고 할 수 있다. 클래스는 프로그래머가 아니지만 해결해야 할 문제가 속하는 영역에 종사하는 사람이라면 사용할 수 있고, 다른 클래스 또는 외부 요소와 독립적으로 디자인하여야 한다.
  • 객체(Object)

    • 클래스의 인스턴스(실제로 메모리상에 할당된 것)이다. 객체는 자신 고유의 속성(attribute)을 가지며 클래스에서 정의한 행위(behavior)를 수행할 수 있다. 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용한다.
  • 메서드(Method), 메시지(Message)

    • 클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지라 할 수 있다. 메서드는 한 객체의 서브루틴(subroutine) 형태로 객체의 속성을 조작하는 데 사용된다. 또 객체 간의 통신은 메시지를 통해 이루어진다.

wikipedia 에서 내용 참조

객체 지향 개발의 특징

1. 추상화

  • 클래스를 만들 때, 공통적인 특징을 뽑아내어 만드는 추상화의 개념을 통해 만들고, 이것을 통해 객체를 만들 수 있다.
  • 일상의 사물에서 공통적인 속성과 행위를 추출한 집합으로 만들고, 그 정보를 명세로 해서 추상적으로 일반화 하여 클래스를 만드는 것

2. 캡슐화

  • 캡슐처럼 사용하는 변수나 메소드가 그 캡슐에서만 사용하게 만드는 것
  • 프로그래밍에서 공통적인 데이터나, 데이터 구조를 묶어서 외부에 드러나지 않게 하는 것

3. 은닉화

  • 캡슐화 된 것에서 공개시키지 않게 하기 위해 숨겨 둔 것.
  • 내부 데이터나 함수 연산이 외부에서 접근하지 못하도록 은닉, 격리 시키는 것

4. 상속성

  • 공통적인 특징을 갖고 있는 것을 객체로 만들고, 이것의 공통적인 특성들이 모두 들어간 확장된 클래스로 만들고, 이것을 상속함, 클래스 간에는 상속의 관계를 만들 수 있다.
  • 상위 개념의 특징을 하위 개념이 물려 받는 것.
  • 단일 상속과 다중 상속이 가능한다.
  • 스위프트는 단일 상속만 가능하다.
  • Objective-C는 무조건 상속을 해야 함.

5. 다형성

  • 똑같은데 다양하게 사용할 수 있다.
  • 하나의 클래스 내에서 하나의 행위를 여러개로 나누어 사용하는 것을 인정해 주어야 한다.
  • Swift에서는 다형성을 지원하지 않으나, 지원하는 것 처럼 보인다. Override는 되나 Overload는 가능하지 않음

참고 : wikipedia, https://beerntv.wordpress.com/2017/01/18/0118-추상화-캡슐화-은닉/