728x90
반응형
객체지향 프로그래밍의 개념
- 프로그래밍에서 객체를 사용하는 것을 의미함.
- 데이터와 메서드를 포함하는 '객체'개념에 기반한 프로그래밍.
- 프로그램의 유연성을 향상하고 유지 및 관리의 가능성을 높임.
- 데이터 및 데이터의 동작(메서드)을 단일 위치(객체)에 통합하여 프로그램 작동방식을 더 쉽게 이해할 수 있음.
객체지향 프로그래밍의 장점
- 개발 속도 향상
- 소프트웨어 개발의 생산성 향상
- 소프트웨어 개발의 생산성 향상
- 개발 비용 절감
객체지형 프로그래밍의 구성 요소
구성 요소 | 설명 |
클래스 | 같은 종류의 집단에 속한 속성과 행동을 정의한 틀. 목적을 같이 하는 데이터와 그 데이터를 처리하는 기능을 묶어놓은 단위. |
객체 | 클래스의 인스턴스. 메모리에 올라가서 실체화된 데이터. |
캡슐화 | 데이터와 행동을 하나의 단위로 묶는 것. 접근제한자를 사용하여 외부에서의 접근을 막아두고 자기 자신만 쓸 수 있게 하는 것.Ex)ㅇㅇ 내꺼임, 퉤퉤 |
상속 | 이미 존재하는 한 클래스의 멤버(변수, 메서드)를 다른 클래스에 물려주는 기법. |
다형성 | 변수, 메서드 또는 객체가 여러 형태를 취하는 기법. |
추상화 | 불필요한 내부 세부 사항을 숨기고 필수 사항을 표시하는 것을 의미. |
캡슐화
- 데이터(변수)와 행동(메서드)을 하나의 단위(클래스)로 묶는 기법.
- 데이터를 수정하지 못하도록 안전하게 하기 위해 정보의 세부사항을 숨기고 객체의 데이터와 메서드를 보호하는 과정을 의미.
- 데이터와 메서드를 보호하는 과정을 의미.
- Ex) 캡슐 안에 담긴 약 -> 캡슐 속 안에 알약 성분이 안전하게 보관되는 것처럼 클래스의 변수와 메서드를 숨겨 안전하게 보호함.
캡슐화 규칙
- 클래스의 변수는 private 접근제한자로 선언함.
- 클래스의 변수에 접급할 수 있는 public 접근제한자로 선언한 Getter(), Setter() 메서드를 제공함.
상속
- 이미 존재하는 한 클래스의 멤버(변수, 메서드)를 다른 클래스에 물려주는 기법.
- 코드를 재사용하고 두 클래스 간에 부모-자식 관계를 설정하는 데 도움을 줌. ex) 부전자전
- 부모 클래스(상위 클래스, 슈퍼 클래스, 기본 클래스) : 해당 클래스가 포함하고 있는 멤버를 상속하는 클래스
- 자식 클래스(하위 클래스, 서브 클래스, 파생 클래스) : 부모 클래스의 멤버를 상속받는 클래스
다형성
- 여러 형태를 취한다는 의미를 가짐.
- 객체지향 프로그래밍에서 다형성은 변수, 메서드, 객체가 여러 형태를 휘하는 기법.
- 상속에 의해 서로 관련된 하나 이상의 클래스 또는 객체가 있을 때 다형성이 발생.
ex) 한 사람이 강아지를 키우는 집사이면서 직장인, 자녀, 부모이기도 하여 다양한 상황에서 다른 행동을 함.
다형성 유형
- 메서드 오버로딩 : 메서드명이 같지만 메서드에 전달된 매개변수의 자료형 또는 개수가 다른 둘 이상의 메서드를 가짐.
- 메서드 오버라이딩 : 상위 클래스의 메서드를 하위 클래스에서 재정의함.
추상화
- 불필요한 세부 정보를 초함하지 않고 객체의 공통적인 속성과 행동만을 나타내는 것을 의미함.
- 불필요한 세부 정보를 숨겨서 프로그래밍의 복잡성과 노력을 줄임.
ex) 강아지를 키우는 사람이 강아지의 신체 구조를 자세히 알기 위해 수의사를 될 필요까지는 없음.
추상화를 하는 방법
- 추상 클래스(abstract class)를 이용하는 방법
- abstract 키워드로 선언하는 추상 클래스
-> 추상 메서드와 구체적인 메서드를 포함할 수 있음. - 추상 클래스는 인스턴스화할 수 없으므로 추상 클래스의 객체를 만들 수 없음.
- 추상 클래스를 사용하려면 다른 클래스에 상속하여 추상 메서드 자체를 구현해야 함.
- abstract 키워드로 선언하는 추상 클래스
- 인터페이스(interface)를 이용하는 방법
- interface 키워드를 사용하여 선언하는 인터페이스
-> interface 키워드는 클래스가 구현해야 하는 동작을 지정하는 데 사용되는 추상자료형 - 인터페이스를 사용하려면 다른 클래스에서 인터페이스를 구현해야 함.
- interface 키워드를 사용하여 선언하는 인터페이스
https://github.com/bottomsUp-99
728x90
반응형
'Java Study' 카테고리의 다른 글
상속(Inheritance)이란? (0) | 2024.06.28 |
---|---|
참조 타입이란? (2) | 2024.06.21 |
메서드 오버로딩(Method Overloading)이란? (0) | 2024.06.20 |
메서드(method)란? (0) | 2024.06.20 |
Scanner VS BufferedReader 의 차이 (2) | 2024.06.19 |