객체지향 프로그램(OOP : Object Oriented Programming)
객체지향이란?
- 객체 중심의 프로그래밍 방식
- 객체끼리의 상호작용을 통하여 프로그램을 작성하는 방식
- 유지보수에 유리하고 프로그램 확장에 용이 >> 반복적인 코드는 재사용하여, 코드를 최대한 간결하게 표현
객체지향 프로그램을 이해하기 위해 필요 정보를 추가로 알려드리자면,
클래스, 객체, 인스턴스란?
- 클래스 : 객체의 '속성'과 '기능'을 정의한 설계도, 틀
- 객체 : 클래스라는 설계도를 이용해 구현되는 대상
- 인스턴스 : 클래스에 작성한 코드대로 구현되는 것
이해를 돕기 위해 하단에 코드를 작성해보았다.
보통 구글링을 해보면,
클래스는 '객체를 정의한 것' 또는 '붕어빵 틀' 이라고 설명하고
객체는 '사물이나 개념' 또는 '붕어빵 틀로 찍어낸 붕어빵' 이라고 설명한다.
그냥 공통적인 특징은 클래스에서 만들고 각각 다른 추가사항들은 객체를 통해 만들어서 쓰면 된다는 말이다.
코드 예시에서도 보면 'Person'라는 붕어빵 틀로 'p' 이라는 객체를 만들었다.
이렇게 만든 'p' 이라는 객체를 사용하여 다른 클래스(Main)에서 'Person' 클래스의 멤버(변수, 메소드)를 사용할 수 있게 된다.
이로 인해, Main 클래스에서 여러 객체를 만들면(p1, p2...) 그 사람의 '이름, 나이'(name, age) 에 대한 변수를 만들지 않고(반복적인 코드 작성 없이) 데이터를 입력만 하면 이름과 나이가 다른 여러 사람(객체)들을 만들 수 있게 됐다.
(붕어빵 틀만 고치면 유지보수에 유리하고 프로그램 확장이 용이하네?? 개꿀)
데이터가 넘어가는 순서는 아래와 같다
이렇게 알게 된 것으로 객체지향 프로그래밍의 4가지 특징을 설명드리자면,
객체지향 프로그램의 4가지 특징
1. 캡슐화 (=부품화)
- 데이터와 코드의 형태를 외부로부터 알 수 없게 함
- 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법 (=정보은닉성)
2. 추상화
- 객체들의 공통적인 특징(속성과 기능)을 하나의 캡슐처럼 묶어서 정의한 것
- 인터페이스로 클래스들의 공통적인 변수나 메소드들을 묶어서 사용
3. 다형성
- 하나의 클래스 객체를 여러 개의 클래스로 표현하는 것
- 오버라이딩, 오버로딩을 통해 메소드를 재정의하여 사용
4. 상속성
- 클래스 끼리 물려주거나 물려받는 것
- 주로 상위클래스(=부모클래스)의 속성과 기능들을 하위클래스(=자식클래스)에서 사용
배열과 마찬가지로 클래스가 졸라리 어렵다.
그치만? 계속 해야지 뭐 어쩌겠어
'IT 언어 > Java' 카테고리의 다른 글
[Java] this 와 this() 의 차이 --*Q/A (0) | 2023.12.13 |
---|---|
[Java] 생성자 --*Q/A (0) | 2023.12.12 |
[Java] 이차원 배열 --*Q/A (0) | 2023.12.11 |
[Java] 배열 --*Q/A (0) | 2023.12.01 |
[Java] 반복문 문제 --*Q/A (0) | 2023.12.01 |