[CS][Java] 객체지향 프로그래밍(OOP)

손경이·2024년 4월 11일
0

CS Study

목록 보기
4/25

객체지향 프로그래밍(OOP: Object-Oriented Programming)


각 기능을 재사용 가능한 개별 객체로 구성해 프로그래밍하는 것


> 객체지향 프로그래밍의 핵심 키워드

  • 추상화(abstraction)

    • 객체의 공통적인 속성과 기능을 추출하여 정의
    • 예시) '자동차'와 '오토바이'의 공통적인 기능 추출하여 '이동 수단' 인터페이스 정의
  • 상속(inheritance)

    • 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소
    • 상위 클래스의 속성과 기능들을 하위 클래스에서 그대로 받아 사용하거나 오버라이딩을 통해 선택적으로 재정의하여 사용
    • extends 키워드를 통해 각각의 하위 클래스로 확장
  • 다형성(polymorphism)

    • 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질

    • 상위클래스 타입의 참조변수로 하위클래스 객체를 참조하는 것

      • 예시) 다형성을 활용한 객체 생성 방식에서는 하위 클래스의 객체를 생성하여 상위 클래스 타입의 참조변수 car2 에 할당, Vehicle car2 = new Car()
    • 대표적인 예시)
      | 메서드 오버라이딩
      - 부모 클래스의 메서드를 자식 클래스가 자신의 역할에 맞게 활용하는 것
      | 메서드 오버로딩
      - 하나의 클래스 내에서 같은 이름의 메서드를 여러 개 중복하여 정의

  • 캡슐화(encapsulation)

    • 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것
    • 캡슐화 하는 이유
      1. 데이터 보호 - 외부로부터 클래스에 정의된 속성과 기능들을 보호
      2. 데이터 은닉 - 내부의 동작을 감추고 외부에는 필요한 부분만 노출
    • 자바의 캡슐화를 구현하는 방법
      1. 접근제어자(private, default, protected, public)
      2. getter/setter

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

  • 프로그램을 보다 유연하고 변경이 용이하게 만듦
  • 코드의 변경을 최소화하고 유지보수를 하는 데 유리
  • 코드의 재사용으로 반복적인 코드 최소화, 코드를 간결하게 표현 가능

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

  • 객체가 많아질수록 용량이 커짐

참고

0개의 댓글