Java

객체 지향 프로그래밍

Sun-Koo 2023. 3. 7. 13:35

로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것

 

추상화(Abstration)

- 반영해야할 현실을 소프트웨어 적으로 단순화 시켜 만드는 행위

- 객체의 공통적인 속성과 기능을 추출하여 정의하는것


객체 지향 장점

- 프로그램을 보다 유연하고 변경이 용이하게 만들 수 있다는 점

- 코드의 변경을 최소화하고 유지보수를 하는 데 유리

- 코드의 재사용을 통해 반복적인 코드를 최소화하고, 코드를 최대한 간결하게 표현


상속(Inheritance)

- 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소

- 상위 클래스로부터 확장된 여러 개의 하위 클래스들이 모두 상위 클래스의 속성과 기능들을 간편하게 사용

- 간편하게 재사용할 수 있어 반복적인 코드를 최소화하고 공유하는 속성과 기능에 간편하게 접근가능


다형성

- 어떤 객체의 속성이나 기능이 그 맥락에 따라 다른 역할을 수행할수 있는 객체 지향의 특성을 의미

- 메서드 오버라이딩 메서드 오버로딩(method overloading)이 있다.


캡슐화(Encapsulation)

- 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것

  • 데이터 보호(data protection) – 외부로부터 클래스에 정의된 속성과 기능들을 보호
  • 데이터 은닉(data hiding) – 내부의 동작을 감추고 외부에는 필요한 부분만 노출

- 외부로부터 클래스에 정의된 속성과 기능들을 보호하고, 필요한부분만 외부로 노출될 수 있도록 하여 각 객체

고유의 독립성과 책임 영역을 안전하게 지키고자 하는 목적


인터페이스(Interface)

- 자바에서 인터페이스는 클래스들이 필수로 구현해야 하는 추상 자료형

- 객체의 사용방법을 가이드라인 하는 것