객체 지향 프로그래밍 : OOP

객체 지향 프로그래밍 : OOP
muaga's avatar
May 19, 2024
객체 지향 프로그래밍 : OOP

객체


객체는 상태와 동작를 가지고 있다.
➡️ 필드와 메소드로 이루워져 있는 소프트웨어의 묶음
 
  • 객체의 상태
    • 객체의 속성
      예) 텔레비전의 채널 번호, 볼륨, 전원 상태
  • 객체의 동작
    • 객체가 취할 수 있는 동작(기능, 행동)
      예) 텔레비전의 켜기, 끄기, 채널 변경하기, 볼륨 변경하기 등
  • 객체의 변수
    • 필드(데이터)
  • 객체 안의 함수
    • 메소드(함수)
       

객체 지향 프로그래밍


객체 지향 프로그래밍이란 다양한 기능을 하는 소프트웨어 객체들을 조합 하여 자기가 원하는 기능을 구현하는 프로그래밍 방식
➡️ 객체를 사용하는 프로그래밍 방식(OOP : Object-Oriented Programming)
 

1. 절차 지향 프로그래밍 vs 객체 지향 프로그래밍

절차 지향 프로그래밍 Procedure Programming
객체 지향 프로그래밍 Object-Oriented Programming
명령형 프로그래밍
객체 조립 프로그래밍
하향식 설계
캡슐화
데이터와 함수의 분리
데이터와 함수를 하나의 덩어리로
 

2. 객체 지향 프로그래밍의 특징

◽ 캡슐화

서로 관련된 데이터와 알고리즘을 캡슐에 넣어서 보호하는 것이다.
사용자들에게 객체의 기능법만 제공하고, 내부는 보지 못하도록 감추는 개념이다. LOCK
  • 객체는 하나의 캡슐로, 필드와 메소드를 가진다고 했는데 필드는 데이터, 메소드는 알고리즘에 해당한다.
  • 목적
      1. 서로 관련된 데이터와 알고리즘을 하나로 묶는 것
      1. 객체를 캡슐로 싸서 객체의 내부를 보호하는 것 ≒ 정보 은닉
 

◽ 정보은닉

객체의 외부에서는 객체의 내부 데이터를 볼 수 없게 한다.
객체 안의 데이터와 알고리즘은 외부에서 변경하지 못하게 막고, 공개된 인터페이스를 통해서만 객체에 접근하도록 하는 개념이다. HIDE
  • 전달 방법
    • 외부 객체는 객체의 내부 데이터 값에 직접 접근할 수 없으므로, 메소드를 통해 간접적으로 전달받아야 한다.
  • 캡슐화와 정보은닉의 필요성
    • 캡슐화는 없고 정보 은닉만 되어 있다면 클래스 개발자는 언제든지 내부 데 이터와 알고리즘을 변경할 수 있기 때문에 업그레이드나 수정이 용이하다.
       

◽ 상속

이미 작성된 클래스(부모 클래스)를 이어받아서 새로운 클래스(자식 클래스)를 생성할 수 있으며, 이것을 상속이라고 한다.
  • 자식 클래스는 부모 클래스의 모든 속성, 동작을 물려 받으며 필요한 부분을 변경하여 사용할 수 있다.
 

◽ 다형성

동일한 이름의 동작이라고 하여도 객체의 실제 타입에 따라서 동작의 내용이 달라지는 것을 말한다.
예) speak - 야옹, 꽥꽥, 멍멍 등
  • 다형성을 사용해 개념적으로 동일한 작업을 하는 메소드에 똑같은 이름을 부여할 수 있으므로 코드가 더 간단해진다. 위의 예처럼 어떤 동물의 소리를 듣고 싶으면 'speak'만 호출하면 되기 때문이다.
 

◽ 추상화

불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 기법이다.
  • 복잡성을 관리하는데 사용한다. 추상화를 사용하지 않으면 객체들이 너무 복잡해지기 때문이다.
  • 추상화는 개발자마다 달라진다. 객체에 대하여 관심사가 다르기 때문이다.
 
Share article

muaga's Hub