[Java/객체지향] 클래스와 객체
2024. 8. 14. 19:57ㆍCS/Java
1) 객체지향언어의 특징
- 코드의 재사용성
- 코드 관리용이
- 신뢰성 높은 프로그래밍
OOP(objected-oriented programminng)란?
- 캡슐화
- 상속
- 추상화
- 다형성**
2) 클래스와 객체
- 클래스: 제품설계도 - TV설계도
- 객체: 제품 - TV
3) 속성과 기능
- 속성: 멤버변수 - 색깔, 전원상태, 채널
- 기능: 메서드 - 켜기, 끄기, 채널 변경하기, 볼륨 변경하기
4) 객체 VS 인스턴스
- 객체: 모든 인스턴스를 대표하는 일반적인 용어
- 인스턴스: 특정 클래스로부터 생성된 객체
- (ex) TV클래스로부터 생성된 객체 = TV인스턴스)
클래스 → 인스턴스화 → 인스턴스(객체)
(설계도) (제품)
클래스가 왜 필요? → 클래스 = 설계도. 즉, 객체인 제품을 생성하기 위해
객체가 왜 필요? → 객체 = 제품. 즉, 객체인 제품(TV)를 사용하기 위해
객체를 사용한다는 것은? → 객체=제품. 즉, 객체인 제품(TV)이 가진 속성과 기능을 사용하려고
5) 한 파일에 여러 클래스 작성
- 하나의 소스파일에는 하나의 클래스만 작성하는 것이 바람직
- 소스파일 이름은 public class이름과 일치
- public class없는 경우, 소스파일의 이름은 class이름 모두 가능
- 하나의 소스파일에는 하나의 public class만 가능
- 대소문자 구분하니, 대소문자까지 일치해야함
- 클래스가 여러 개인 경우, main메서드가 있는 클래스와 소스파일이름이 일치해야함
6-7) 객체의 생성과 사용
- 클래스 작성
class Tv {
String color;
boolean power;
int channel;
void power() {power = !power;}
void channelup() {channel++;}
void channelDown() {channel--;}
}
- 객체의 생성
Tv t; // 1. 참조변수 = 리모컨 -> 객체를 다루기 위한 리모컨
t = new Tv(); // 2. 객체 생성 -> 3. 대입연산자(=)로 리모컨과 객체 연결[주소연결]
Tv t = new Tv();
- 객체의 사용 : 객체가 가진 변수(속성)와 메서드(기능)를 사용한다 → 어떻게 접근? 리모컨(참조변수)를 사용하여 접근
-> 리모컨인 t를 사용하여 접근
t.channel = 7; // 변수 사용 방법
t.channelDown(); // 메서드 사용(호출)방법
System.out.println("현재 채널은 "+t.channel+" 입니다.");
- 순서: 클래스(설계도)작성 → 객체(제품)생성 → 객체(제품)사용
리모컨 타입과 객체의 타입은 일치해야함 → 왜? Tv는 Tv리모컨으로 다루고, 에어컨은 에어컨 리모컨으로 다루어야함
객체를 사용하려면 리모컨을 꼭 사용해야함 t.channel
대입연산자(=)로 리모컨과 객체를 연결해주어야함 [주소연결]
- 객체와 참조변수의 관계
- 하나의 객체를 여러 개의 참조변수가 가리키는 것은 가능 (ex) t1과 t2가 주소객체의 주소‘0X100’을 동시에 가리킬 수 있음
- 여러 객체를 하나의 참조변수가 가리키는 것은 불가능 (ex) t1이 객체의 주소인 ‘0X100’와 ‘0X200’을 동시에 가리킬 수 없음)
- → 왜? 변수는 하나의 값만 저장 가능하기 때문에
8) 객체 배열 == 참조변수배열
9) 클래스의 정의
- 설계도
- 데이터+함수의 결합
- 사용자 정의 타입
(2) 데이터+ 함수의 결합
- 데이터 저장 공간의 발전 과정
변수 : 하나의 데이터를 저장할 수 있는 공간
배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간 → [한계] 같은 종류 밖에 저장할 수 없음
구조체
- 서로 관련된 여러 데이터(종류 관계 X)를 하나로 저장할 수 있는 공간
- = 여러 값을 하나로 묶었는데, 배열과 달리 다른 타입도 하나로 저장할 수 있는 공간 → [한계] 서로 관계있는 변수들 끼리만
클래스 : 데이터와 함수의 결합 = 서로 관계있는 데이터 변수를 함수와 함께 묶은 것 (구조체 + 함수)
- 함수
- = 메서드
- 어떤 하나의 작업을 하는 명령문들을 하나로 묶은 것
- 함수는 어떤 작업이나 계산을 함 → 작업할 때 “데이터 변수”를 가지고 작업을 함 → 그러므로 데이터와 관련있는 함수를 같이 묶는 것이 편리해서 묶어놓음
(3) 사용자 정의 타입
'CS > Java' 카테고리의 다른 글
[Java/객체지향] 오버로딩과 오버라이딩 (0) | 2024.08.19 |
---|---|
[Java/객체지향] static 메서드와 인스턴스메서드 (0) | 2024.08.18 |
[Java/객체지향] 매개변수 (0) | 2024.08.18 |
[Java/객체지향] 메서드 (0) | 2024.08.17 |
[Java/객체지향] 변수 (0) | 2024.08.16 |