# OOP

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

객체 지향 프로그래밍이란? 코드의 모든 것을 객체(Object)로서 표현하고자 하는 프로그래밍 패러다임

2022. 01. 16에 씀

20190717 백업

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

Object Oriented Programming → OOP 코드의 모든 것을 객체(Object)로서 표현하고자 하는 프로그래밍 패러다임

객체 지향 프로그래밍의 장점

  1. 재사용 및 생산성 향상
    • 상속 등을 통하여 한 프로그램 내에서의 코드를 재사용할 수 있음
    • 다른 사람이 만든 클래스를 이용할 수 있으며 상속을 통해 확장이 가능함
  2. 유지 보수의 용이성과 안정성
    • 기존 기능 수정 혹은 신규 기능 추가가 용이하며 경제적임
    • 캡슐화로 인해 다른 기능에 미치는 영향이 최소화됨
  3. 대형 프로젝트에 적합
    • 클래스 단위의 모듈화를 통해 업무 분담이 용이하다

객체 지향 프로그래밍의 단점

❓ 그럼에도 객체 지향을 사용하는 이유

→ OOP의 재활용성과 유지, 보수, 편의성과 신뢰성 때문에 → 소프트웨어 위기 : 과거, 하드웨어의 발전을 소프트웨어가 따라잡지 못한 상황이 발생한 적 있음

소프트웨어 위기 - 위키백과, 우리 모두의 백과사전

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

  1. 객체
    • 세상의 모든 대상을 지칭
    • 상태(property - 프로퍼티) 데이터와 동작(method - 메서드) 을 하나의 논리적 단위로 묶는 복합적 자료구조
    • 클래스 : 어떤 객체들의 집단이 공통적으로 갖는 속성(attribute)기능(behavior) 을 모아 변수와 메소드로 정의내린 것
    • 인스턴스 : 클래스에 정의된 것을 토대로 실제 메모리에 할당되어 프로그램에서 사용되는 데이터
  2. 추상화
    • 공통의 속성이나 기능을 묶어내어 목적에 맞는, 필요한 부분만을 표현한 새로운 데이터 유형을 만드는 것
    • 다양한 속성 중에서 필요한 속성만 간추려 내어 표현하는 것
    • ex) 클래스를 정의하는 것
  3. 캡슐화
    • 데이터와 기능을 하나로 묶어서 관리하는것
    • 외부에서 내부의 데이터에 접근하는 것을 제한, 보호하는 의미로도 쓰임
    • 재사용을 용이하게 해주며, 정보를 보호할 수 있게 해줌 - 정보은닉
  4. 상속
    • 코드의 불필요한 중복을 없애기 위하여 필요 --> 코드의 재사용
    • 상위 개념의 특징(데이터, 함수)을 하위 개념이 물려받을 수 있게 해줌
    • 부모 클래스의 속성과 기능은 이어받으나 기능의 일부분만 변경해야 할 경우, 상속받은 자식 클래스가 해당 기능만 다시 정의하여 사용할 수 있도록 해줌
    • 유지 보수 비용을 줄여줌 → 코드의 이원화 문제 해소
  5. 다형성
    • 형태는 같으나 다른 기능을 하는 것 → 하나의 변수명 혹은 함수명이 상황에 따라 다르게 해석될 수 있다
    • 같은 호출이라도 호출된 객체에 따라 다른 동작을 하도록 함
    • 오버라이딩 : 부모 클래스의 같은 이름과 매개변수의 메소드가 다르게 기능하도록 재정의 하는 것
    • 오버로딩 : 같은 이름의 메소드가 매개변수의 타입과 개수에 따라 다르게 기능하도록 정의하는 것
프로필 사진

조예진