[IT] 객체지향(OOP)이란?

Sai·2023년 3월 19일
0

1. 객체지향(Object Oriented Programming)

  • 프로그램 구현에 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 말한다.
  • 객체의 관점에서 프로그래밍 하는 방법이다.
  • 절차지향(Procedural Programming)에 비해서 사람의 사고방식과 더 가깝다.

2. 객체지향의 장단점

1) 장점

  • 코드의 재사용이 용이하다.

    남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서
    사용할 수 있다.
  • 유지보수가 쉽다.

    절차 지향 프로그래밍에서는 코드를 수정해야 할 때 일일이 찾아
    수정해야하는 반면 객체 지향 프로그래밍에서는 수정해야 할 부분이
    클래스 내부에 멤버 변수 혹은 메서드로 존재하기 때문에 해당 부분만
    수정하면 된다.
  • 대형 프로젝트에 적합하다.

    클래스 단위로 모듈화 시켜서 개발할 수 있으므로 대형 프로젝트처럼
    여러 명, 여러 회사에서 프로젝트를 개발할 때 업무 분담하기 쉽다.

2) 단점

  • 처리속도가 상대적으로 느리다.

  • 객체가 많으면 용량이 커질 수 있다.

  • 설계시 많은 시간과 노력이 필요하다.

3. 객체지향 프로그래밍 키워드 6가지

1) 클래스 & 인스턴스
2) 추상화
3) 상속
4) 캡슐화
5) 정보은닉
6) 다형성

1) 클래스 & 인스턴스

  • 클래스 (Class)
    • 객체를 만들어 내기 위한 설계도 혹은 틀
    • 연관되어 있는 변수와 메서드의 집합
  • 인스턴스 (Instance)
    • 클래스의 현재 생성된 오브젝트
    • 클래스의 복제본으로써 클래스 안의 변수를 계속해서 새로 정의하며 중복되어야 하는 곳에 대신 들어가 유용하게 쓰일 수 있다.
    • 실체화된 인스턴스는 메모리에 할당 된다.

2) 추상화

  • 하위 클래스(sub-class)들의 공통적인 기능을 추출하여 상위 클래스(super class)에 정의하는 것.
  • 어떤 객체가 수행하야 하는 핵심적인 역할만을 규정해 두고 실질적인 구현은 해당 클래스를 상속받는 객체들에서 하도록 프로그램을 설계하는 것

3) 상속

  • 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소
  • 상위 클래스로부터 확장된 여러 개의 하위 클래스들이 모두 상위 클래스의
    속성과 기능들을 간편하게 사용
    할 수 있도록 한다.
  • 반복적인 코드를 최소화 하고 공유하는 속성과 기능에 간편하게 접근하여
    사용 할 수 있도록 한다.

4) 캡슐화

  • 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것.
  • 객체의 응집도와 독립성을 높임으로서 객체의 모듈화를 지향한다.
  • '정보 은닉'의 개념중 하나이다
  • 자바의 경우 접근 제어자(public, private, protected, default)를 통해 객체의 캡슐화, 은닉화를 구현한다.

5) 정보 은닉

  • 객체지향 언어적 요소를 활용하여 객체에 대한 구체적인 정보를 노출시키지 않도록 하는 기법을 칭한다.
  • 대표적인 정보 은닉 기법 3가지
    • 객체의 구체적인 타입 은닉 ( = 업캐스팅)
    • 객체의 필드 및 메소드 은닉 ( = 캡슐화)
    • 구현 은닉 ( = 인터페이스 & 추상 클래스)
  • 정보 은닉은 보안적인 측면 뿐만 아니라, 은닉되어 알 필요가 없어
    덜 공부하여도 간편하게 사용할 수 있게 해주는 의미도 내포한다.

6) 다형성

  • 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질
  • 어떤 객체의 속성이나 기능이 그 맥락에 따라 다른 역할을 수행할 수 있는 객체 지향의 특성
  • 대표적인 예로 메서드 오버라이딩(method overriding)
    메서드 오버로딩(method overloading)이 있다.
profile
IT is Sai

0개의 댓글