객체 지향 프로그래밍

전예훈·2023년 3월 15일
0

이번 시간에는 객체 지향 프로그래밍에 대해 공부해 보겠습니다.

객체 지향 프로그래밍이란?

객체지향 프로그래밍은 실세계에 존재하고 인지하고 있는 객체(Object)를 소프트웨어의 세계에서 표현하기 위해 객체의 핵심적인 개념 또는 기능만을 추출하는 추상화(abstraction)를 통해 모델링하려는 프로그래밍 패러다임을 말합니다.

객체란?

객체의 의미에대해서 다시 알아보면 객체는 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조 되는 공간을 의미하며 값을 저장 할 변수와 작업을 수행 할 메소드를 서로 연관된 것 들끼리 묶어서 만든 것을 객체라고 할 수 있습니다.

예를 들면 객체가 레고의 조각이고 레고의 조각을 조립해서 무언가를 만드는 방식이 객체지향 프로그래밍이라고 할 수 있습니다.

객체 지향 프로그래밍 언어

객체지향 프로그래밍을 지원하는 언어로는 c++, c# java, Python, javascript,ruby, swift 등이 존재합니다.


객체 프로그래밍의 특징

객체 지향 프로그래밍은 크게 상추상화, 캡슐화, 상속, 다형성 4가지의 특징을 가지고 있습니다.

1. 추상화

추상화를 통해 인터페이스가 단순해지고 너무 많은 기능들이 노출되지 않아서 예기치 못한 사용상의 변화가 일어나지 않습니다. 클래스 정의 시 메서드와 속성만 정의한 것을 인터페이스라고 부릅니다.

  • 객체에서 공통된 속성과 행위를 추출 하는 것
  • 공통의 속성과 행위를 찾아서 타입을 정의하는 것
  • 추상화는 불필요한 정보는 은닉하고 중요한 정보만을 표현해 프로그램을 간단하게 만드는 것

2. 캡슐화

속성 과 기능을 정의하는 변수와 메서드를 클래스라는 캡슐에 넣어서 분류하는 것으로 재활용이 원활하다는 장점이 있고 캡슐화를 통해서 정보은닉을 활용 할 수 있다는 장점이 있습니다.

  • 데이터와 기능을 하나의 단위로 묶는 것
  • 은닉 : 구현은 숨기고, 동착은 노출 시킴
  • 느슨한 결합에 유리: 언제든 구현을 수정할 수 있다.


추상화 vs 캡슐화

추상화와 캡슐화 서로 헷갈려 하는 개념중 하나입니다.
캡슐화가 코드나 데이터의 은닉에 포커스가 맞춰져 있다면 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드등을 노출 시키지 않고 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있습니다.


3.상속

부모 클래스의 특징을 자식 클래스가 물려받는 것을 뜻합니다.

예를 들어 차라는 부모 클래스가 있다면
자식 클래스는 전기차 ,휘발유차, 디젤차 가 있다고 생각 할 수 있습니다.
부모의 차라는 요소에 자식요소도 차가 맞으나 자식요소들은 각각의 다른 특징들을 가지고 있다고 생각하면 됩니다.

  • 클래스의 속성과 행위를 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것을 말합니다.
  • 새로운 클래스가 기존의 클래스의 데이터와 연산을 이용할 수 있게 하는 기능입니다.

4.다형성

객체 지향 프로그래밍은 하나의 클래스 내부에 같은 이름의 행위를 여러개 정의하거나 상위 클래스의 행위를 하위 클래스에서 재정의하여 사용 할 수 있기 때문에 다형성 이라는 특징을 갖게 됩니다.

  • 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석이 가능하다.
  • 어떠한 요소에 여러 개념을 넣어 놓는 것

profile
더욱더 QA스럽게!

0개의 댓글