본문 바로가기
Lang/Java

[java] 객체 지향 프로그래밍

by 상똥 2023. 6. 4.

[1. 객체지향 프로그램]

객체 지향 프로그래밍(Object-Oriented Programming, OOP)이란?

- 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것

- 각각의 객체는 메시지를 주고 받고 데이터를 처리할 수 있음

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

- 코드의 재사용성이 높아짐

- 프로그램을 유연하고 변경이 용이하게 해줌

소프트웨어 개발과 보수를 용이하게 함

- 보다 직관적인 코드 분석을 가능하게 함

- 코드의 중복을 제거함

 

[2. 객체지향 언어의 특징]

캡슐화 (Encapsulation)

모든 변수들과 메소드들을 클래스 단위로 모으는 것

- 객체 안에 데이터와 메소드를 숨기는 것

객체 속성과 메소드를 외부에 노출하지 않음 (정보 은닉)

- 외부의 잘못된 접근으로부터 필드와 메소드를 보호

의도치 않은 변화에서 데이터와 메소드의 안전을 유지

상속 (Inhertiance)

- 존재하는 클래스의 속성들과 메소드들을 공유하는 새로운 클래스를 만듦

- 존재하는 클래스의 확장 기능

- 부모 클래스의 객체 속성을 하위 클래스에 전달

코드의 중복을 줄여주고 기능 변경 및 유지보수에 장점

추상화 (Abstraction)

객체의 공통 속성이나 행위를 추출하는 객체 지향 설계의 한 부분

- 자바에서의 추상화는 공통된 Attribute나 Method를 추출하는 것

일반적으로 사물의 공통된 특징을 파악하는 행위

- 객체지향 설계의 한 부분  

다형성 (Polymorphism)

공통된 부모의 추상화된 속성을 상속 받아 이를 구현하는 단계에서 자식 클래스의 객체 특징에 따라 구현

자식 클래스는 부모 클래스의 모든 속성을 물려받으나, 동일한 기능을 강요받지 않도록 자식 클래스 내에서의 메소드 재정의를 허락함

- 문맥에 따라 같은 단어라도 다르게 해석됨

정적 다형성(Overloading) : 동일한 이름을 가진 메소드에 전달하는 인자를 변경함으로써 다른 형태의 메소드로 구현이 가능한 오버로딩

동적 다형성(Overriding) : 서브클래스가 부모 클래스를 상속받아 기능을 확장하여 사용함

 

[3. 클래스와 객체]

클래스

- 객체의 설계도 역할, 객체를 정의해놓은 것

- 객체를 생성하는 데에 사용됨

객체

- 실제로 존재하는 것, 사물 또는 개념

객체와 인스턴스

- 클래스를 인스턴스화하여 객체를 만드는 것

- 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 표현

 

 

 

 

참고: 자바의 정석

'Lang > Java' 카테고리의 다른 글

[java] 예외처리  (0) 2023.06.04
[java] 추상화와 인터페이스  (0) 2023.06.04
[Java] 2차원 리스트 List  (0) 2023.04.06
[Java] 1차원 리스트 List  (0) 2023.04.06
[Java] class 클래스  (0) 2023.04.03