객체지향프로그래밍

JellyChoco·2020년 2월 6일
1
post-thumbnail

1. 객체지향프로그래밍(Object Oriented Programming)

  • 의의

  • Object Oriented programming(이하 "OOP")의 기본 아이디어는 단순하고 직관적입니다. 객체는 데이터와 기능을 논리적으로 묶어놓은것으로 만약 자동차가 객체라면 그 "데이터"에는 제조사,모델,차량번호 등이 있을 것 이며, 그 "기능"으로는 가속,변속,헤드라이트 등이 있다.

  • 용어

  • 객체(Object)는 클래스의 인스턴스(Instance). 상위 클래스의 속성을 가지고 있으면서 개별적인 "데이터"와 행위(메소드 : Method) 또한 가지고 있다.

  • 클래스(Class)는 어떤 자동차처럼 추상적이고 범용적인것, 인스턴스(Instance)는 특정 자동차처럼 구체적이고 한정적인것, 위에서 설명한 "기능"에 해당하는것을 메소드(Method)라고 볼수 있다. 클래스에 속하지만 특정 인스턴스에 묶이지 않는 기능을 클래스 메소드라고 합니다.(가속은 자동차에도있고, 열차에도있고, 비행기에도 있다)

  • 인스턴스(Instance)라는 용어는 "객체(object)"와 유사하지만 의미상으로 "객체"는 좀더 일반적인 의미인 반면에 "인스턴스"라고 표현하면 "현재 생성된 바로 그 객체"라는 인스턴트(instant)한 뉘앙스로 좀 더 짙게 표현할 수 있습니다. (출처)

  • 장점

  • 1. 프로그램을 유연하고 변경이 용이하게 만든다.

  • 2. 프로그램의 개발과 보수를 간편하게 만든다.

  • 3. 직관적인 코드 분석을 가능하게 한다.

  • 4. 강한 응집력(Strong Cohesion)과 약한 결합력(Weak Coupling)을 지향한다.

    *응집력(cohesion) : 프로그램의 한 요소가 해당 기능을 수행하기 위해 얼마만큼의 연관된 책임과 아이디어가 뭉쳐있는지를 나타내는 정도. 프로그램의 한 요소가 특정 목적을 위해 밀접하게 연관된 기능들이 모여서 구현되어 있고, 지나치게 많은 일을 하지 않으면 그것을 응집력이 높다고 표현한다.

    *결합력(coupling) : 프로그램 코드의 한 요소가 다른 것과 얼마나 강력하게 연결되어 있는지, 얼마나 의존적인지를 나타내는 정도. 결합력이 낮다는 것은 한 요소가 다른 요소들과 관계를 크게 맺고 있지 않은 상태를 의미한다.

    *OOP의 경우 클래스에 하나의 문제 해결을 위해 데이터를 모아 놓은 객체를 활용한 프로그래밍을 지향하므로 응집력을 강화하며, 클래스 간에 독립적으로 디자인함으로써 결합력을 약하게 할 수 있다.

  • 특성

  • 1.캡슐화(Encapsulation) : 여러가지 정보를 하나의 캡슐안에 넣는다라는 의미, 객체안에는 여러가지 정보가 담길수 있다.

  • 2.상속(Inheritance) : 물려 받는다라는 의미, 앞에서 이야기한 자동차를 예로 들면, 모든 자동차는 바퀴가 있고, 사람이 탑승가능한 특징 등 공통적인 정보들을 갖고 있어야 한다.

  • 3.추상화(Abstraction) : 객체들의 공통적인 프로퍼티와 메소드를 뽑아내는 작업을 의미(출처)

  • 4.다형성(Polymorphism) : 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. 키보드의 키를 통해서 비유를 들어보겠다. 키보드의 키를 사용하는 방법은 '누른다'이다. 하지만 똑같은 동작 방법의 키라고 하더라도 ESC는 취소를 ENTER는 실행의 목적을 가지고 있다. 다형성이란 동일한 조작방법으로 동작시키지만 동작방법은 다른 것을 의미한다.(출처)

  • 결론

  • 객체지향프로그래밍이란 것도 결국 사람이 세계를 보고 이해하는 방법을 프로그래밍에다 접목시킨것

profile
코린이? 개린이!

0개의 댓글