JAVA

23-07-10 객체 지향 프로그래밍 (OOP / Object-Oriented Programming)

모건이삼촌 2023. 7. 10. 20:23

0. 목차

  • 개념
  • 객체 지향의 특징 4가지 (추상화, 상속, 다형성, 캡슐화)
  • 결론
  • References

 

1. 개념

 

객체지향 프로그래밍이란 여러 독립적인 부품들의 조합, 객체들의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미

 

마치 자동차를 만들 때, 수 많은 부품들의 결합과 연결로 하나의 완전한 자동차가 만들어지는 것과 같다고 할 수 있음

 

다른 프로그래밍으론 함수형 프로그래밍(Functional Programming), 절차 지향 프로그래밍(Procedural Programming)이 있다.

 

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

  •  코드의 재사용을 통해 반복코드를 최소화
  • 분석과 설계의 전환이 쉬움
  • 유지보수에 용이

 1-2. 객체 지향 프로그래밍의 단점

  • 설계에 많은 시간이 소요됨

* 객체(Object) 란?

 유형, 무형에 모두 속하는 실재하는 대상이다.

쉽게 얘기하자면 설계도 혹은 성분 (class) 으로 이루어진 완성품(Object) 이라고 보면 된다

ex)

 1) 자동차 -> 차량 설계도(class), K5 (Object)

 2) 사람 -> 몸속 성분(class), 김철수(Object)

 

 

2. 객체 지향의 특징 4가지

객체 지향의 특징으론 추상화, 상속, 다형성, 캡슐화가 있다.

 

 2-1. 추상화 

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

추상화는 추상클래스와 인터페이스로 정의할 수 있다.

 

예를들면, 자동차와 오토바이는 모두 이동수단이며 모든 이동 수단은 전진과 후진을 할 수 있다는 공통점을 가진다.

전진, 후진 기능을 인터페이스에 정의 한 뒤 car, bike클래스에 구현(Implements)하여 사용할 수 있다.

 

 

 2-2. 상속

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

상위(부모)클래스로부터 확장된 여러 개의 하위(자식) 클래스들이 모두 상위 클래스의 속성과 기능들을 간편하게 사용할 수 있음

상위 클래스는 하위 클래스를 알 수 없으며 하위 클래스들끼리도 서로 알 수 없다.

 

간단하게 얘기하자면 부모객체의 특성과 틀징을 하위 객체가 물려받고 사용하는것

 

 2-3. 다형성

같은 함수가 있어도 매개변수에 따라 각자 다른 일을 하는 것을 다형성이라 한다.

간단하게 설명하자면, A라는 사람은 B회사에 소속된 회사원이지만 가족 구성원중엔 막내 아들이고 C라는 아들의 학부모이다.

 

다형성엔 Overloading, Overriding이 있다.

 

Overloading 이란 같은 이름의 메서드를 여러개를 정의하는것을 얘기한다.

오버로딩의 조건으론 아래와 같다.

  • 메서드의 이름이 같아야함
  • 매개변수의 개수, 타입이 달라야함

 

Overriding 이란 부모클래스로부터 상속받은 메서드의 내용을 재정의 하는것이다.

오버라이딩의 조건으론 아래와 같다.

  • 메서드의 이름이 같아야 함.
  • 매개변수가 같아야 함.
  • 반환타입이 같아야 함

 

 2-4. 캡슐화

서로 연관있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는것을 의미

캡슐화를 하는 이유로는 크게 두가지를 언급할 수 있음

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

캡슐화를 활용하면 객체 내부의 동작을 외부로의 노출을 최소화하여 각 객체의 자율성을 높이고, 이를 통해 객체간 결합도를 낮출 수 있다.

 

2-4-1. 캡슐화를 구현하는 방법

 1) 접근제어자 활용

  - 접근제어자는 클래스 또는 클래스의 내부의 멤버들에 사용되어 해달 클래스나 멤버들을 외부에서 접근하지 못하도록 접근을 제한하는 역할을 함

접근제어자 클래스 내 패키지 내 다른 패키지 하위 클래스 패키지 외 설명
private O X X X 동일 클래스 내에서만 접근 가능
default O O X X 동일 패키지 내에서만 접근 가능
protected O O O X 동일패키지 + 다른패키지의 하위클래스에서 접근 가능
public O O O O 접근 제한 없음

 

 2) Getter, Setter 사용

private 접근제어자를 사용한 경우 외부에서 Getter와 Setter를 사용해 불러올수도, 값을 설정할 수도 있다.

 

 

3. 결론

객체 지향 프로그래밍의 

 

4. References

 4-1. Blog 1

https://velog.io/@majaeh43/%EC%A0%88%EC%B0%A8%EC%A7%80%ED%96%A5-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

 4-2. Blog2

https://www.codestates.com/blog/content/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8A%B9%EC%A7%95

 

 4-3. JAVA의 정석

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=76083001