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

DEINGVELOP·2022년 8월 16일
0

Java & OOP

목록 보기
2/5

객체(Object)

: 구체적, 추상적인 데이터의 단위

  • 객체지향 프로그래밍의 대상

객체지향 프로그래밍 (OOP)

  • 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 그 객체들간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방식

장점

  • 코드 재사용 용이 : 남이 만든 코드를 가져와 이용할 수 있으며, 상속을 통해 확장하여 사용도 가능

  • 유지 보수가 쉬움 : 수정할 부분을 찾기 쉬움

  • 높은 안정성 : 클래스 단위로 모듈화시켜서 개발할 수 있으므로, 여러 회사에서 프로젝트를 개발할 때 업무를 분담하기 쉬움


단점

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

  • 객체가 많으면 용량이 커짐

  • 설계시 많은 시간과 노력이 필요함



객체지향의 4대 특성

  • 추상화 (Abstraction)
    : 어떤 실체로부터 공통적인 부분이나 관심있는 특성들만 한 곳에 모으는 것

    • ex) 어떤 하위 클래스들에 존재하는 공통적인 메소드를 인터페이스로 정의하는 것 : 추상화에 해당됨

  • 캡슐화 (Encapsulation)
    : 비슷한 역할을 하는 속성과 메소드들을 하나의 클래스로 모은 것. 즉, 변수와 함수를 하나로 묶은 것

    • 데이터에 외부에서 직접 접근할 수 없고, 오로지 함수를 통해서만 접근 가능

    • 정보 은닉 : 캡슐 내부의 로직이나 변수들을 감추고, 외부에는 기능(API)만을 제공하는 것


  • 상속 (Inherutance)
    : 클래스의 재사용

    • 하위클래스가 상위클래스를 상속받으면, 상위 클래스의 멤버변수나 메소드를 그대로 물려받을 수 있다.

    • 상속으로 인해 코드 재활용 가능 ➡ 생산성 증가 + 유지보수 용이


  • 다형성 (Polymorphism)
    : 같은 모양의 함수가 상황에 따라 다르게 동작하는 것

    • 오버라이딩(Overriding) : 상위클래스의 메소드를 하위클래스에서 똑같은 이름으로 재정의하는 것(덮어씌우기)

    • 오버로딩(Overloading) : 함수의 매개변수의 개수/타입 등을 달리 해서 다르게 사용하는 것



객체지향 5원칙 : SOLID

1. SRP (Single Responsibility Principle)

: 단일 책임 원칙

2. OCP (Open Closed Principle)

: 개방 폐쇄 원칙

3. LSP (Liskov Substitution Principle)

: 리스코프 치환 원칙

4. ISP (Interface Segregation Principle)

: 인터페이스 분리 원칙

5. DIP (Dependency Inversion Principle)

: 의존 역전 원칙

0개의 댓글