일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 알고리즘
- 클라우드
- 자바스크립트 기초
- sqlplus
- docker image
- join
- MySQL
- 거스름돈
- Java
- 그리디 알고리즘
- Docker 핵심
- docker 개념
- 전자레인지 문제
- 디버깅
- 백준
- SQL
- Access Modifier
- 서브넷
- 프로그래머스
- DevOps
- date_format
- greedy
- reference data type
- Greedy 알고리즘
- docker
- 코테
- 브론즈
- debugging
- java.io
- 탐욕 알고리즘
- Today
- Total
나는매일가운데
JAVA 기초 (4) : OOP (객체 지향 프로그래밍)의 개념 본문
1. 용어 정리
- OOP (Object-Oriented Programming) : System상으로 옮기는 방법론
- OOPL (Object-Oriented Programming Language) : OOP를 지원하는 프로그래밍 언어.
- 객체 (Object) : Real world의 모든 것들. 즉, Real world에서 System상으로 옮기는데 표현되는 모든 것들을 객체라고 한다. 객체는 식별성을 가지고 있고, 상태와 행위가 있다.
- Instance : 객체의 특징을 구현한 것.
- Class : 객체의 공통된 특성, 행위, 관계 등을 모아놓은 집단 => 객체를 추상화하여 표현/정의한것 / 객체를 생성하는 틀
Application Class | main을 가지고 있기 때문에 실행이 되는 Class |
Bean Class (=Object Modeling Class) | main을 가지고 있지 않기 때문에 실행이 되지 않으며, 객체를 표현한 Class |
Filed | Class에 표시되는 객체의 상태나 속성 정보, 객체의 골격 |
Method | Class에 표시되는 객체의 행위를 말하며, 이후 Application에서 사용될 함수들을 Method라고 한다. |
- 추상화 (Abstraction) : 객체지향의 원리이며, 각 개체들의 공통적인 특징들을 모아 추출하여 Class로 묶는 행위를 말한다. 또한 System의 관점에 따라 추출해야되는 공통적인 특징들이 달라지기 때문에 System에 의존적이다.
- Generalization / Specialization : class의 filed에서 공통된 부분이 많을 수록 일반화 (추상화 수준이 높다)고 하고, 공통된 부분이 적을 수록 '구체적이다' 라고 한다. 이로 인해 계층화가 이루어진다.
- Field : 객체의 attribute이며 정적인 상태 (static 하다)
- Method : 객체가 하는 행위 (behavior)이며 동적인 상태이다. (Dynamic 하다.)
2. 객체지향 프로그래밍의 기본 원리
- 쉽게 말해서, RW에서 System상으로 옮기는 프로그래밍이다. 가장 중요한 개념은 추상화, 캡슐화, 다형성, 계층화이다.
(1) 추상화 (Abstraction)
- 객체들의 공통적인 특징들을 추출하여 묶는 행위.
- 어떤 System을 구성할것인가에 따라 관점이 달라지고 이에 추출할 정보가 달라진다 (문제 영역에 의존적이다.)
- 객체지향에서 가장 중요한 개념이다.
(2) 캡슐화 (Capsulation)
- Class의 정보를 은닉하는 행위
- 사용자가 물을 때만 정보를 공유할 수 있게 한다.
(3) 모듈화
- 아직 공부 안했습니다...ㅜㅜ
(4) 계층화 (Hierarchy)
- 추상화 정도에 따라 개념적으로 큰 class (상위 class)와 작은 class(하위 class)가 생성이 되고, 하위 클래스가 상위클래스의 정보를 참조하는 형태이다. 상위로 갈수록 추상화 수준이 높아지고, 하위로 내려갈수록 구체적이다.
- 이에 따라 ~ is a ~ 관계가 성립이 된다.
- 상위 클래스는 하위 클래스를 대신할 수 없고, 하위 클래스는 상위 클래스를 대신할 수 있다.
=> Data Type이 다르기 때문 (묵시적 형변환이 적용됨) Reference data type의 경우 byte 수가 아닌 개념적으로 큰 쪽 으로 변환된다.
ex) 개념 (동물 > 사자) => 사자는 동물이 될 수 있지만, 동물은 사자가 될 수 없다.
- class 간 관계 형성이 가능해지고, 이는 정보의 공유를 통해 공통 부분을 효과적으로 관리할 수 있다. 일관성을 보장한다.
(5) 다형성 (Polymorpism)
- 주요 개념은 Method Overloading
- Overloading 이란, is a 관계를 형성할 수 있음에 따라 보장 되었다.
- 이는 Method의 이름은 동일하나, 그 Method를 통해 다양한 기능을 활용할 수 있다.
3. 객체지향의 기본개념
(1) 객체 (Object)
- 현실세계의 모든것들 (사물, 사물의 특징, 행동, 습관, 구조 등등)
- 각자의 identifier가 존재한다. -> 식별성을 갖는다.
- 시간 혹은 행위에 따라 객체의 상태가 변한다. (동적인 상태)
(2) 클래스 (Class)
- 추상화를 통해 객체들의 공통된 특성, 행위, 관계, 의미를 가지고 있는 집단
- class를 통해 Instance 생성과 객체생성이 가능하다.
'for JAVA > JAVA 기초' 카테고리의 다른 글
Java 기초 (6) Access Modifier, Modifier-230109 (0) | 2023.01.24 |
---|---|
Java 기초 (6). Polymorphism (다형성), Bean class 구조 23.01.06 (1) | 2023.01.15 |
JAVA 기초 (3) : 기초 문법 (0) | 2023.01.04 |
JAVA (2) 기초 - Java 개발 및 실행 환경 구축 (23.01.03) (0) | 2023.01.03 |
JAVA 기초 (1) System 개발과 JAVA 개발 환경 (23/01/02) (0) | 2023.01.02 |