[Java] 클래스/객체 지향 프로그래밍
Day9-1. 230510
객체 지향 프로그래밍
부품 객체를 먼저 만들고 이것들을 하나씩 조립해 완성된 프로그램을 만드는 기법
객체란?
- 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서
자신의 속성과 동작을 가지는 모든 것.
ex) 자동차, 자전거, 사람, 책
- 객체는 필드(속성)와 메소드(동작)로 구성되어 있음.
- 객체 모델링 : 현실 세계의 객체를 소프트웨어 객체로 설계하는 것.
객체의 상호작용
- 객체들은 각각 독립적으로 존재
- 다른 객체와 서로 상호작용하면서 동작.
- 객체들 사이의 상호작용 수단 : 메소드
- 객체가 다른 객체의 기능을 이용하는 것 : 메소드 호출
- 메소드 호출의 형태
리턴값 = 전자계산기객체.메소드(매개값1, 매개값2,…);
ex) int result = Calculator.add(10,20);
객체 간의 관계
객체 지향 프로그램에서 객체는 다른 객체와 관계 맺음
관계의 종류
- 집합 관계에 있는 객체는 하나의 부품이고 하나는 완성품에 해당
- 사용 관계 : 객체가 다른 객체를 사용하는 관계
- 상속 관계 : 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계
객체와 클래스
- 현실 : 설계도 → 객체
- 자바 : 클래스 → 객체
인스턴스(객체) : 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스라고 함.
→ 하나의 클래스로부터 여러 개의 인스턴스를 만들 수 있음.
객체 지향 프로그래밍 개발 단계
1단계. 클래스를 설계
2단계. 설계된 클래스를 가지고 사용할 객체를 생성
3단계. 생성된 객체를 이용
클래스 선언
클래스이름
자바 식별자 작성 규칙에 따라 이름 작성
- 한글 이름 가능하나, 영어 이름으로 작성
- 알파벳 대소문자는 서로 다른 문자로 인식
- 서로 다른 단어혼합된 이름을 사용한다면 첫 글자는 대문자로 작성하는 것이 일반적
=> '클래스 이름.java'로 소스 파일 생성
클래스 선언
public class 클래스이름{
}
- 소스 파일당 하나의 클래스 선언하는 것이 일반적
- 두 개 이상의 클래스도 선언 가능
- 소스 파일 이름과 동일한 클래스만 public으로 선언 가능
- 선언한 개수만큼 바이트 코드 파일 생성
객체 생성과 클래스 변수
- 클래스로부터 객체를 생성하려면 다음과 같이 new 연산자 사용하면 됨.
new 클래스():
- new : 클래스로부터 객체를 생성시키는 연산자
- new 연산자 뒤에는 생성자가 오는데, 생성자는 클래스() 형태를 가지고 있음.
- 클래스()는 생성자를 호출하는 코드
- new 연산자로 생성된 객체는 메모리 힙(Heap) 영역에 생성됨.
- 클래스로 선언된 변수에 new 연산자가 리턴한 객체의 번지를 저장하는 코드
클래스 변수;
변수 = new 클래스();
클래스 변수 선언과 객체 생성을 1개의 실행문으로 작성
클래스 변수 = new 클래스;
클래스의 구성 멤버
1. 필드(Filed)
- 객체의 데이터가 저장되는 곳
- 선언 형태는 변수와 비슷하지만, 필드를 변수라고 부르지는 않음
- 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재.
(변수는 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸)
[접근제어자] [제어자] 타입 필드명[=초기값];
2. 생성자(Constructor)
- 객체 생성 시 초기화 역할 담당
- new 연산자로 호출되는 특별한 중괄호{} 블록
- 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비함.
- 메소드와 비슷하게 생겼지만, 클래스의 이름으로 되어 있고 리턴 타입이 없음.
[접근제어자] 클래스명(매개변수리스트){}
3. 메소드(Method)
- 객체의 동작에 해당하는 실행 블록
- 객체의 동작에 해당하는 중괄호{} 블록
- 메소드를 호출하게 되면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행
- 메소드는 필드를 읽고 수정하는 역할도 하지만, 다른 객체를 생성해서 다양한 기능을 수행하기도 함.
- 객체 간의 데이터를 전달하는 수단
- 외부(호출한 곳)로부터 매개값을 받아 실행에 이용하고, 실행 후 결과 값을 외부(호출한 곳)로 리턴할(돌려줄) 수도 있음.
[접근제어자] [제어자] 리턴유형 메서드명(매개변수리스트){}