728x90
객체 지향 프로그래밍이란?
객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
객체란?
객체는 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며 값을 저장 할 변수와 작업을 수행 할 메소드를 서로 연관된 것들끼리 묶어서 만든 것을 객체라고 할 수 있다.
객체지향 프로그래밍을 붕어빵에 빗대 표현 할 수 있는데, 객체가 붕어빵 틀이 될 것이고 붕어빵 틀을 사용해 붕어빵을 만드는 방식이 객체지향 프로그래밍이라고 할 수 있다.
객체는 클래스의 인스턴스다
인스턴스란?
설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체를 말한다. 즉, 객체를 소프트웨어에 실체화 하면 그것을 '인스턴스'라고 부른다. 실체화된 인스턴스는 메모리에 할당된다.
객체 지향 프로그래밍의 특징
객체 지향 프로그래밍은 크게 추상화, 캡슐화, 상속, 다형성의 네가지 특징을 가진다.
1. 추상화
- 객체에서 공통된 속성과 행위를 추출 하는 것이다.
- 공통의 속성과 행위를 찾아서 타입을 정의하는 과정이다.
- 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단하게 만드는 것이다.
2. 캡슐화
- 데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것이다.
- 낮은 결합도를 유지할 수 있도록 설계하는 것이다.
속성과 기능을 정의하는 변수와 메소드를 클래스라는 캡슐에 넣어서 분류하는 것으로 재활용이 원활하다는 장점이 있고 캡슐화를 통해서 정보 은닉을 활용할 수도 있다.(접근 제한자 활용)
3. 상속
- 클래스의 속성과 행위를 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것을 말한다.
- 새로운 클래스가 기존의 클래스의 데이터와 연산을 이용할 수 있게 하는 기능이다.
장점 | 단점 |
재사용으로 인한 코드가 줄어든다. | 상위 클래스의 변경이 어려워진다. |
범용적인 활용이 가능하다. | 불필요한 클래스가 증가할 수 있다. |
자료와 메소드의 자유로운 사용 및 추가가 가능하다. | 상속이 잘못 사용될 수 있다. |
4. 다형성
- 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석 될 수 있는 것이다.
- 어떠한 요소에 여러 개념을 넣어 놓는 것이다.
객체 지향 프로그래밍은 하나의 클래스 내부에 같은 이름의 행위를 여러개 정의하거나 상위 클래스의 행위를 하위 클래스에서 재정의하여 사용할 수 있기 때문에 다형성이라는 특징을 갖게 된다.
오버라이딩
- 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 사용하는 것이다.
오버로딩
- 같은 이름의 메소드가 인자의 개수나 자료형에 따라 다른 기능을 하는 것이다.
객체 지향 프로그래밍의 장단점
장점
- 클래스 단위로 모듈화시켜서 개발하기 때문에 업무 분담이 편리하고 대규모 소프트웨어 개발에 적합하다.
- 클래스 단위로 수정이 가능하기 때문에 유지 보수가 편리하다.
- 클래스를 재사용하거나 상속을 통해 확장함으로써 코드 재사용이 용이하다.
단점
- 처리속도가 상대적으로 느리다.
- 객체의 수가 많아짐에 따라 용량이 커질 수 있다.
- 설계시 많은 시간과 노력이 필요하게 될 수 있다.
728x90
'2022 하계방학 SW 집중교육' 카테고리의 다른 글
[Java] Constructor (0) | 2022.08.11 |
---|---|
[Java] Static (0) | 2022.08.09 |
[Java] Getter/Setter (0) | 2022.08.08 |
[Java] Access Modifier (0) | 2022.08.08 |
[Java] Compiler & Interpreter (0) | 2022.08.08 |