Object Oriented Programming

황순은·2021년 4월 9일
0

TIL

목록 보기
5/9

절차적 언어

  • 프로그래밍 언어는 절차적 언어라고 불렀었다. 절차적 언어는 순차적인 명령의 조합이다.

객체지향 언어

  • 하지만 객체지향 프로그래밍이라는 패러다임으로 단순한 변수 ⇒ 함수로 순차적 작동을 넘어 데이터의 접근과, 처리과정에 대한 모형을 만들어내는 방식을 고안해냈다. 우리가 프로그래밍을 더 쉽게, 더 잘하게 만들기 위해서 발전했다.
  • 클래스라고 부르는 데이터 모델의 청사진을 사용해 코드 작성한다.
  • 현대 언어들은 대부분 객체지향 특징을 갖는다. (java C++ C#)

OOP

  • OOP는 프로그램 설계철학중 하나이다.
  • OOP는 객체로 그룹화된다, 객체는 한번만들고 나면 메모리상에서 반환되기 전까지 객체 내의 모든 것이 유지된다.

객체 내에는 "데이터와 기능이 함께 있다"는 원칙에 따라 메소드와 속성이 존재한다.

객체지향의 특성

캡슐화 Encapsulation

  • 캡슐화는 외부에서 속성과 기능(메소드)을 따로 정의하는 것이 아닌 하나의 객체 안에 넣어서 묶는 것이다. 즉, 데이터와 기능을 하나의 단위로 묶는 것.
  • '은닉성' 우리가 Tv속을 뜯어보지 않아도 리모컨으로 조작할 수 있는것 처럼 내부구조는 감추어놓고 외부에서 조작할 수 있는 명령어만 공개한다. 이렇게하면 외부적인 간섭으로 인한 오류를 방지할 수 있고 남이 만든 클래스의 객체들도 일일이 뜯어볼 필요 없이 제공되는 기능을 사용할 수 있다. 이러한 은닉성으로 객체지향은 실력없는 엔지니어때문에 발전했다라는 말이있다^^;
  • 캡슐화는 특히 낮은 결합도를 유지 및 보수할 수 있도록 해준다.

캡슐화는 코드가 복잡하지 않게 만들고, 재사용성을 높입니다.

추상화 Abstraction

  • 추상화는 구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념 혹은 집합으로 다루는 수단을 말한다.
  • 캡슐화가 내부구조를 감추는데 포커스가 맞춰져 있다면, 추상화는 클래스를 사용하는 사람이 단순한 기능의 이름으로 조작할 수 있게 정의하는 것이다.

추상화는 마찬가지로 코드가 복잡하지 않게 만들고, 단순화된 사용으로 인해 변화에 대한 영향을 최소화합니다.

상속 Inheritance

  • 상속은 이미 정의된 부모 클래스의 모든 데이터와 기능을 자식 클래스가 물려받는 것을 말한다.

부모 클래스(Human)를 상속받아 자식 클래스(Student) 작성한다면, 사람과 학생의 연관성을 고려했을때 학생도 사람의 데이터를 가지기 때문에 자식 클래스는 부모의 속성을 그대로 물려받고, 학생의 데이터를 추가할 수 있다.

상속은 불필요한 코드를 줄여 재사용성을 높입니다.

다형성 Polymorphism

  • 다형성은 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 것이다.
  • 한 메세지가 객체에 따라 다른 방법으로 응답할 수 있다.

다형성으로 인해 동일한 메소드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해집니다.

profile
안녕하세요.

0개의 댓글