Language/Java
[Java] 객체지향 프로그래밍
개발사전
2022. 1. 19. 23:10
1. 객체
주체가 아닌 우리 주변에 있는 모든 것으로 프로그래밍의 대상이 되는 것을 객체라고 합니다.
2. 객체지향 프로그래밍
프로그래밍의 대상인 것들을 객체화해서 프로그래밍하는 것입니다.
3. 객체지향 프로그래밍의 장점
모듈화된 프로그래밍
- 신뢰성 높은 프로그래밍이 가능 : 제어자와 메서드를 통해 데이터 보호 및 올바른 값 유지
- 추가, 수정, 삭제가 용이
- 코드 재 사용성이 높음
- 결국, 프로그래밍에 드는 시간과 비용이 획기적으로 줄어들 수 있습니다.
4. 객체와 클래스의 관계
클래스
객체를 정의해 놓은 설계도
클래스는 직접 사용하는 것이 아니라, 단지 객체를 만들기 위한 틀만 제공합니다.
클래스는 객체의 타입이 됩니다.
객체
해당 클래스를 데이터 타입으로 메모리에 생성된 것을 말합니다.
추상화와 구체화되는 과정
현실의 객체가 갖는 속성(상태)과 기능(행위)이 추상화(Abstraction) 되어 클래스에 정의되고, 클래스는 구체화되어 프로그램의 객체(Instance, Object)가 됩니다. 상태(속성)는 추상화와 구체화를 통해 변수(필드)로 정의되고, 기능(행위)은 메서드(함수)로 정의됩니다.
------현실----- ---Person Class--- -----------객체----------
| 철수 | | [멤버 변수] | |Person p = new Person();|
| [상태, 속성] | | String name; | | p.name="철수"; |
| 이름 : 철수 | | int age; | | p.age=20; |
| 나이 : 40 | -> 추상화 -> |boolean isHungry:| -> 구체화 -> | p.isHungry=false; |
| 배고픔 : X | | [멤버 메서드] | | p.eat(); |
| [기능, 행위] | | void eat() | | p.work(); |
| 먹음 | | void work() | --------------------------
| 일함 | -------------------
----------------
5. 객체 생성과 JVM 메모리 구조
JVM의 메모리 구조
- Class Area : 클래스 그 자체를 로딩하는 영역(Field 정보, Method 정보, 타입 정보, 상수)
- Method Stack : 메서드들의 실행 공간으로 스레드 별로 관리됨. 로컬 변수는 선언된 영역을 벗어나면 삭제.
- Heap : 객체를 저장하기 위한 영역. 멀티 스레드 시 이 영역을 통해 공유함. 생성된 객체는 오직 GC만이 제어.