
안녕하세요!
오늘은 자바에서 가장 중요한
객체지향 프로그래밍 개념
에 대해 설명드리려고 합니다.
간단한 예로 들어볼까요?
우리가 하는 현실 세계에서는 어떠한 제품을 만들기 위해
부품을 하나씩 조립해서 완성시킵니다.
자동차, 컴퓨터, 냉장고 등 큰 제품 혹은 볼펜처럼 작은 제품들도
여러 가지 부품들을 조립하여 완성시킵니다.
소프트웨어도 마찬가지입니다!
필요한 부품들을 조립해서 하나의 프로그램을 만들 수 있습니다.
이 기법을 바로 객체지향 프로그래밍이라고 하는 것입니다!
소프트웨어에서의 부품을 '객체'라고 표현하는 것입니다.
이 객체가 무엇인지 살펴보겠습니다!
1. 객체란?
객체란, 세상에 존재하는 물체를 뜻하며 식별이 가능한 것을 의미합니다.
물리적으로 존재하는 객체와 개념적인 것 또한 식별이 가능하므로 객체라고 볼 수 있습니다.
객체는 속성과 행위로 구성되어 있습니다.
계산기를 예로 들어볼까요?
계산기는 회사, 모델, 색상, 가격 등의 속성을 가질 수 있습니다.
그리고 숫자를 계산하는 행위를 하죠!
자바에서는 이러한 속성과 행위를 필드와 메서드로 정의하여 구현할 수 있습니다.
2. 객체 간의 협력
현실 세계에서는 사람이라는 객체와 계산기라는 객체는 서로 행위를 통해 상호작용하며 협력할 수 있습니다.
사람이 숫자를 누르면 계산기는 숫자를 입력합니다.
그리고 원하는 연산자를 선택하면 계산기는 숫자를 연산하여 출력합니다.
소프트웨어의 객체들은 행위를 정의하는 자바의 메서드를 통해 이루어집니다.
사람 객체는 계산기 객체가 가지고 있는 계산(Calculate();)이라는 메서드를 호출합니다.
그러면 계산기 객체는 이에 반응하여 계산 값을 반환합니다.
소프트웨어의 객체들은 메서드를 통해 데이터도 주고 받을 수 있습니다.
사람 객체는 메서드를 호출할 때 괄호( ) 안에 데이터를 넣어 호출할 수 있는데,
이때 괄호 안에 넣는 데이터를 파라미터 혹은 매개값이라고 표현합니다.
3. 객체 간의 관계
현실 세계에서는 객체는 수많은 관계를 맺고 살아갑니다.
예를 들어, 위에서 계속 언급한 사람과 계산기는 '사용의 관계'를 맺고 있는 것이죠!
이처럼 객체는 사용 관계, 포함 관계, 상속 관계를 맺을 수 있습니다.
사람 객체가 계산기 객체를 사용하는 것은 사용 관계라고 볼 수 있습니다.
컴퓨터 객체에는 모니터 객체, 키보드 객체, 데스크탑 체 등이 포함되어 있는데, 이것은 포함 관계라고 할 수 있습니다.
컴퓨터 객체와 계산기 객체는 모두 기계 시스템 객체라는 같은 공장에서 생성된다고 하면,
컴퓨터 객체와 계산기 객체는 기계 시스템 객체를 상속받는 상속 관계라고 볼 수 있습니다.
4. 객체지향 프로그래밍의 특징
객체지향 프로그래밍의 특징에는 캡슐화, 상속, 다형성, 추상화가 있습니다.
1) 캡슐화
캡술화란 속성(필드)와 행위(메서드)를 하나로 묶어 객체로 만든 후,
실재 내부 구현 내용은 외부에서 알 수 없게 감추는 것을 의미합니다.
2) 상속
객체지향 프로그래밍에는 부모 객체와 자식 객체가 존재합니다.
부모 객체는 가지고 있는 필드와 메서드를 자식 객체에게 물려주어 사용할 수 있도록 만들 수 있습니다.
상속은 객체 간의 구조를 파악하기 쉬워지고, 일관성을 유지하기 좋고, 코드의 재사용성이 증가할 수 있다는 장점이 있습니다.
3) 다형성
객체가 연산을 수행할 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라
다른 여러 가지 형태로 재구성되는 것을 의미합니다.
예를 들어, 하나의 Car라는 클래스를 토대로 A Car 객체는 '빵!'이라는 경적 소리가 나도록,
B Car 객체는 '빵빵!'이라는 경적 소리가 나도록 horn()이라는 메서드의 구현을 다르게 재정의하여 사용할 수 있습니다.
4) 추상화
객체에서 공통된 부분들을 모아 상위 개념으로 새롭게 선언하는 것을 의미합니다.
공통적이고 중요한 것들을 모아 객체를 모델링합니다.
5. 객체와 클래스
객체를 생성하기 위해서는 설계도가 필요합니다.
현실 세계에서는 자동차를 만들기 위해 자동차 설계도를 토대로 자동차를 생산합니다.
마찬가지로 소프트웨어에서도 객체를 만들기 위해서는 설계도에 해당하는 클래스가 필요합니다.
이때 클래스를 토대로 생성된 객체를 해당 클래스의 인스턴스라고 부르며, 이 과정을 인스턴스화라고 합니다.
동일한 클래스로 여러 개의 인스턴스를 만들 수 있습니다.
이때 객체와 인스턴스는 거의 비슷한 표현이지만,
자동차 클래스를 통해 만들어진 하나의 자동차를 인스턴스라고 부르며,
이러한 여러 개의 인스턴스들을 크게 통틀어서 자동차 객체라고 표현할 수 있습니다.
이렇게 자바에서 가장 중요한 객체지향 프로그래밍에 대한 개념을 알아보았습니다.
모르는 내용에 대해서는 질문 대환영입니다 ㅎㅎ
'Java' 카테고리의 다른 글
[Java] 객체 생성 | 참조형 변수 | 객체 배열 (1) | 2024.07.31 |
---|---|
[Java] 클래스 설계 | 객체 생성의 기초 (0) | 2024.07.31 |
[Java] 자바 문법 조건문 사용하기 | 자바 if문 | 자바로 가위바위보 구현하기 (1) | 2024.07.23 |
[Spring] Spring이란 무엇인가? (0) | 2024.07.02 |
[Java] 자바란 무엇일까? (0) | 2024.07.02 |