JAVA
OOP 객체 지향 프로그램
zkzk7290
2024. 9. 20. 20:47
반응형
oop 객체 지향 프로그램 객체란? 데이터와 해당 데이터를 처리하는 방법을 포함하는 프로그래밍의 기본 단위
EX)
속성(커피 종류, 가격, 현재 재고, 물의 온도) + 기능: 커피 제조, 재고 관리 , 가격 설정
학교 관리 시스템
학생 객체
속성: 학생이름 , 학번, 수강 과목, 등의 데이터 + 기능: 성적 조회, 수강 신청 등의 메서드
교수 객체
속성 : 교수이름 , 연구 분야, 담당과목 + 기능 : 강의 계획서 업로드 , 성적입력
1. 클래스(class)정의 : 객체의 상태(속성)와 행동(메서드)을 정의
실제 데이터나 코드 X 데이터와 기능 구조를 정의하는 하나의 개념적인 틀
2. 객체(Object)정의 - 클래스에 정의된 속성과 메서드를 가지고 있는 '실체'
클래스 기반으로 생성 클래스의 인스턴스라고 불림
각 객체는 독립적인 상태와 행동을 가짐
3.클래스 의 행동 (메서드) : 클래스 내부에서 정위 된 함 객체 행동을 표현
클래스의 해당 값을 변경 가능, 값을 반환
package chapter04;
// 클래스 구조 : 필드 ,메서드 ,사용자
class car{//클래스
String model;
int year;
car(String modelName, int year){// 매개변수
model =modelName;
this.year = year;
}
void displayInfo() {//void 메서드명 = 리턴값이 없는 메서드
System.out.println("model"+ model+ "year : "+"year");
}
}
public class Object03 {
public static void main(String[] args) {
// 객체 생성 (객체 생성 - 객체 인스턴스화)
//new 연산자를 사용
//클래스 생성자를 호출 - 객체의 초기 상태를 설정
car mycar = new car("제네시스",2024);
// 객체 사용
//1. 필드 접근 (. 연산자 사용)
System.out.println(mycar.model);
System.out.println(mycar.year);
}
}
this키워드 : 클래스의 필드와 생성자로 받아오는 데이터의 이름이 같을 경우 구분을 위해 사용
void - 해당 메서드 반환하는 결과X -> 반환이 존재하지 않을경우 메서드명 앞에 반드시 필요
package chapter04;
class Book{
String title;
int price;
예제 1)
Book(String title, int price){
this.title = title;
this.price = price;
}
void BookInfo() {// 클래스 기능
System.out.println("책 제목: "+title+","+ "책의 가격"+ price);
}
}
// 생성자 생략 가능 사용시- 호출될 메서드
// 생략시 - 속성에 기본값이 할당
public class Object04 {
public static void main(String[] args) {
Book book = new Book("만화책",12000);// 객체를 인스턴스화
Book book1 = new Book("소설책",5000);
book1.BookInfo();// 메서드 호출
book.price= 1000;// 속성값 변경 가능
book.BookInfo();
}
}
필드 VS 지역 변수VS 인스턴스 변수
필드(속성): 객체의 지속적인 상태를 저장하는 클래스 내부의 변수
지역변수() : 메서드가 실행되는 동안에만 존재하는 일시적인 변수
인스턴스 변수 : 클래스의 각 객체(인스턴스)에 변수
>> 클래스 내부에서 선언, 객체가 생성될 때 메모리에 할당
주석도 꼼꼼이 읽어 봐주세요
package chapter04;
//클래스 정적변수 -static키워드 사용하여 선언되는 변수
//클래스의 모든 인스턴스에서 공유되는 데이터
//>> 프로그램이 시작될때 생성 프로그램이 종료될때 소멸(메모리에 할당)
class CarClass{
//인스턴스 변수 :각 객체(인스턴스) 마다 다른 값을 가짐
String color;
int speed;
String brand;
// 정적 변수: 해당 클래스로 생성되는 모든 객체가 동일한 값을 가짐
// 데이터 타입 앞에 static키워드 사용
// 변수 선언과 동시에 공유될 값을 초기화
static int tireNumber =4;
static int doorNumber=4;
void accelerate(int increment) {
// increment는지역변수이다
// >> 메서드 내부에서만 유효
speed += increment;
}
}
public class Object05 {
public static void main(String[] args) {
CarClass car1 =new CarClass();
// 객체의 인스턴스 변수
car1.brand = "kia";
car1.color = "black";
// 객체의 클레스 변수 -클래스 .변수
//>>클래스변수는 클래스명으로 접근을 권장
System.out.println(CarClass.tireNumber);//4
System.out.println(car1.brand);//Kia
}
}
반응형