Chapter 05. 클래스와 객체
객체란 무엇인가?
- 객체(Object)
- 의사나 행위가 미치는 대상(사전적 의미)
- 구체적, 추상적 데이터의 단위
예시) 사람,자동차,주문,생산,관리
객체 지향 프로그래밍 이란?
- 객체 지향 프로그래밍(Object Oriented Programming: OOP)
- 객체를 기반으로 하는 프로그래밍
- 객체를 정의 하고, 객체의 기능을 구현하며,
객체간의 협력(cooperation)을 구현
cf. 절차 지향 프로그래밍(Procedural Programming)
클래스(class)란?
- 객체를 코드로 구현한 것
- 객체 지향 프로그래밍의 가장 기본 요소
- 객체의 청사진(blueprint)
멤버변수, 메서드
- 멤버 변수
- 객체가 가지는 속성을 변수로 표현
- 클래스의 멤버변수
- memeber variable,property, attribute
- 메서드
- 객체의 기능을 구현
- method, member function
public class Student {
/* 멤버 변수 영역 */
private Long idx;
private String name;
/* 메서드 영역 */
public Long getIdx() {
return idx;
}
}
public 클래스
- 자바 파일 하나에 여러 개의 클래스가 존재 할 수 도 있음
- 단, public 클래스는 하나이고, public 클래스와 자바 파일 이름은 동일해야 함
함수(function)란?
- 하나의 기능을 수행하는 일련의 코드
- 함수는 호출하여 사용하고 기능이 수행된 후 값을 반환 할 수 있음
- 함수로 구현된 기능은 여러 곳에서 호출되어 사용될 수 있음
함수 정의하기
- 함수는 이름, 매개변수, 반환 값, 함수 몸체로 구성됨
int add(int a, int b) { // 반환값 이름(매개변수1, 매개변수2)
int result; // 함수 몸체
result = a + b;
return result; // 반환
}
메서드(method)란?
- 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수
- 메서드를 구현함으로써 객체의 기능이 구현 됨
- 메서드 이름은 사용하는 쪽(클라이언트 코드)에 맞게 명명하는 것이 좋음
EX) getName(), setName()
인스턴스란?
- 클래스로 부터 생성된 객체
- 힙 메모리에 멤버 변수의 크기에 따라 메모리가 생성
- 클래스를 기반으로 new 키워드를 이용하여 여러 개의 인스턴스를 생성
참조 변수와 참조 값
- 참조 변수
- 메모리에 생성된 인스턴스를 가리키는 변수
- 참조 변수는 참조하는 출력시 원시 타입과 다르게 메모리 주소를 출력함
- 참조 값
int a = 1;
Student student = new Student();
System.out.println(a); // 1
System.out.println(student); // 1f3eda13 << 주소 값