본문 바로가기
JAVA

OOP 객체 지향 프로그램

by zkzk7290 2024. 9. 20.
반응형
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
	}
}
반응형

'JAVA' 카테고리의 다른 글

상속(inherence)- extends, super();  (2) 2024.09.23
접근제한자  (1) 2024.09.23
오버 로딩 ,오버 라이딩  (1) 2024.09.09
반복문  (0) 2024.09.06
조건문 (if~else, switch)  (0) 2024.09.06