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

eunsiver·2023년 2월 6일

Java

목록 보기
4/7

OOP : object oriented programming

객체의 관점에서 프로그래밍을 한다는 것
객체를 기준으로 코드를 나누어 구현

자바의 경우, 구성 부분 단위: 클래스

  • C언어

    • 절차 지향 프로그래밍
    • (절차지향 프로그래밍: 프로세스가 함수 단위)
  • OOP

    • 객체 지향 프로그래밍
    • 절차지향에 비해 사람의 사고방식과 더 가깝다.
    • 객체들의 유기적인 관계를 통해 프로세스가 진행된다.
    • 애플리케이션을 구성하는 요소들을 객체로 바라보고, 객체를 유기적으로 연결하는 프로그래밍

OOP(객체지향프로그래밍)의 특성 4가지

캡슐화, 추상화, 다형성, 상속성

1) 캡슐화

  • 하나의 객체에 대해 그 객체가 특정한 목적을 위해 필요한 변수, 메소드를 하나로 묶는 것
  • 클래스를 만들 때, 훗날 이 클래스에서 만들어진 객체가 특정한 목적을 잘 수행할 수 있도록 사용해야할 변수와 그 변수를 가지고 특정한 액션 즉 메서드를 관련성 있게 클래스에 구성해야 한다.

  • 캡슐화의 중요한 목적: 은닉화

  • User의 정보가 public으로 선언되어 있다면, 누구가 그 정보를 변경할 수 있고, 열람가능하다. 따라서 private으로 해서 데이터를 보호, 접근을 제한해야한다.
  • 이렇게 보호된 변수는 getter, setter등의 메소드를 통해서만 간접적으로 접근이 가능하도록 하는 것이 캡슐화의 중요한 목적이다. (다만, setter를 사용하는 것 보단 생성자를 사용하며 변경 가능하게 만드는 것이 더 좋다.)

참고

  • 캡슐화와 정보은닉은 동일한 개념이 아니며,
    캡슐화를 하면 불필요한 정보를 감출 수 있기 때문에, 정보은닉을 할 수 있다는 특징이 있다는 것이다.
  • 예를 들어, 사용자 입장에서 리모콘을 사용하는데 리모콘 내부회로(privat)를 알 필요가 없으며, 리모콘 조작 기능(public)으로 정의된 속성만 알면 된다는 것

2) 추상화

  • 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법

3) 다형성

  • 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 함
  • 코드의 재사용, 코드 길이 감소, 유지 보수 용이
  • 같은 동작이지만 다른 결과물이 나올때
  • 오버라이딩, 오버로딩

    예를 들어, 고양이클래스에 '울음'이라는 속성이 정의되어 있다고 한다.
    사자는 고양이 과이므로 고양이 클래스를 상속 받는다고 하면, 사자 클래스에도 '울음'이라는 속성이 자동으로 추가되며 이것을 상속이라고 한다.
    그런데 고양이와 사자의 울음소리는 다르며 같은 '울음' 속성임에도 실제는 다르다.
    이런것을 다형성이라고 할 수 있다.

4) 상속성, 재사용

  • 자바에 상속은 단일 상속밖에 안되며, C++에서는 다중 상속이 지원된다.
  • 상속이 필요한 이유: 코드의 중복을 없애기 위해
  • 상속: 기존 상위클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념
  • 기존 클래스에 기능을 가져와 재사용할 수 있으면서, 동시에 새롭게 만든 클래스에 새로운 기능을 추가할 수 있게 만듦
profile
Let's study!

0개의 댓글