Java_day 10 레코드

정규식 정규식, 정규식, 정규식

미리 정의된 문자 클래스

String( ) 매개변수 main() 메서드 목적


객체 지향 프로그래밍

: 부품에 해당하는 객체를 생성한 후 이들 객체를 하나씩 조립하여 완전한 프로그램을 만드는 기술

목적무엇인가요

개체 = 데이터(필드) + 메서드

(속성 -> 필드, 작업 -> 메서드)

개체 및 클래스

– 개체를 만들 때 청사진은 무엇에 해당합니까? 수업

– 이 클래스의 클래스에서 생성된 객체

– 클래스에서 객체를 생성하는 과정 -> 인스턴스화

– 동일한 클래스의 여러 인스턴스 생성 가능

클래스 선언

: 클래스 선언은 객체 생성 청사진을 생성하는 방법입니다.

– 클래스 선언은 소스 파일과 동일한 이름을 가집니다.

//클래스 선언
public class 클래스명 {
}

– public 클래스 -> public 클래스 선언(패키지 상관없이 어디서나 사용 가능)

– 클래스 이름은 보통 UpperCamelCase로 첫글자를 씁니다.

– 특수문자에 $, _ 포함 가능

– 하나의 소스 파일에 여러 클래스를 선언할 때 소스 파일과 이름이 같은 클래스만 공용 클래스로 선언할 수 있습니다.

– 특별한 사유가 없는 한 소스 파일 당 하나의 클래스 선언

개체 생성 및 참조 변수

무덤 새로운 연산자 : 클래스로부터 객체를 생성할 때 사용하는 객체 생성 연산자


출처 : https://blog.naver.com/PostList.naver?blogId=qbxlvnf11

ㄴ 위 그림에서 클래스 변수는 생성된 객체를 의미합니다.

클래스의 두 가지 용도

도서관 수업 : 다른 클래스에서 사용하는 실행 가능하지 않은 클래스

수업을 하다 : main() 메서드가 있는 실행 가능한 클래스

일반적으로 Java는 실행 가능한 클래스와 여러 라이브러리 클래스로 구성됩니다.

클래스 멤버


출처: https://m.blog.naver.com/PostList.naver?blogId=imf4

public class ClassName {
//필드 선언 (필드_객체의 데이터가 저장되는 곳)
int fieldName;

//생성자 선언 (생성자_객체 생성 시 초기화 역할 담당)
ClassName() {...}

//메소드 선언 (메소드_객체의 동작으로 호출 시 실행하는 블록)
int methodName() {...}
}

무덤 대지 : 객체 데이터를 저장하는 역할

무덤 건설자 : new 연산자로 객체를 생성할 때 객체의 초기화를 담당하며, 선언 형태는 메소드와 비슷하나 리턴 타입이 없고 클래스 이름과 동일하다.

무덤 방법 : 개체가 수행할 작업, 다른 프로그램의 기능 및 호출 개체 간의 상호 작용

필드 선언 및 사용

ㅁ필드선언 : 값의 정의

	// 값에 대한 정의
	// field
	int age;
	String name;
	int score;
	
	// 기능에 대한 정의
	// method
타입 필드명 ( = 초기값);

※ 필드와 (로컬)변수의 차이※

– (로컬) 변수는 생성자 및 메서드 블록에서 생성자 및 메서드를 선언/호출할 때만 생성되어 사용됩니다.

필드는 클래스 블록에서 선언됨 / 개체 내부에 존재 / 개체 내부 및 외부에서 사용 가능

필드 이름은 일반적으로 첫 문자가 lowerCamelCase인 소문자입니다.

ㄴ 객체 생성 시 초기화되지 않은 필드 값을 자동으로 생성합니다. 기본로 초기화

ㄴ Default type은 0, false / reference type은 null

ㅁ 필드 다루기: 필드를 쓴다는 것은 필드 값을 읽고 바꾸는 것을 의미합니다.

. 운영자: 점(.)은 개체 액세스 연산자입니다. 인용 변수 및 점(.) 연산자액세스 필드(외부 개체에서)

		MyClass01 var1 = new MyClass01();
		
		// . : 필드 접근 연산자
		var1.age = 99;
		var1.name = "son";
		var1.score = 100;
		
		System.out.println(var1.age);
		System.out.println(var1.name);
		System.out.println(var1.score);
		
		MyClass01 var2 = new MyClass01();
		
		var2.age = 88;
		var2.name = "cha";
		var2.score = 200;
		
		System.out.println(var2.age);
		System.out.println(var2.name);
		System.out.println(var2.score);

ㄴ 필드가 클래스에 선언되어 있다고 해서 즉시 사용할 수 있는 것은 아닙니다.

필드는 개체의 데이터이며 개체가 없으면 필드도 존재하지 않습니다.

필드는 클래스에서 개체를 생성한 후 사용할 수 있습니다.

	public class Car {
	//필드 선언
	String company = "현대자동차";
	String model = "그랜저";
	String color = "검정";
	int maxSpeed = 350;
	int speed;
}
		//Car 객체 생성
		Car myCar = new Car2();
		
		//Car 객체의 필드값 읽기
		System.out.println("제작회사: " + myCar.company);
		System.out.println("모델명: " + myCar.model);
		System.out.println("색깔: " + myCar.color);
		System.out.println("최고속도: " + myCar.maxSpeed);
		System.out.println("현재속도: " + myCar.speed);
		
		//Car 객체의 필드값 변경
		myCar.speed = 60;
		System.out.println("수정된 속도: " + myCar.speed);

메소드 선언

메서드 선언은 개체의 동작을 실행 블록으로 정의합니다.


출처: https://velog.io/@00yubin00

ㅁ 반환형

: 메소드가 실행된 후 호출자에게 전달되는 결과 값의 유형

값을 반환하지 않는 메서드는 무효로 작성됩니다.

ㄴ반환 타입이 있는 메소드는 실행 블록에서 return 문으로 반환 값을 지정해야 합니다.

void powerOn() {...}               //리턴값이 없는 메소드 선언
double divide(int x, int y) {...}  //double 타입 값을 리턴하는 메소드 선언
			// field
	
			// method
			// 리턴타입 메소드명 (파라미터 목록) { 실행문들...}
			// 메소드명 작성관습 : loewrCamelCase
			void methodName(int param) {
				//실행문들...	
			}
			void run() {
			}
			void wakeUp() {	
			}
			void standUp() {
			}

ㅁ 방법명

: 메서드명은 카멜케이스로 작성하며 첫글자는 소문자로 한다.

ㅁ 매개변수

: 메소드 호출 시 전달되는 파라미터를 받기 위해 사용

전달할 매개변수가 없으면 이 매개변수를 생략할 수 있습니다.

double divide(int x, int y) {...}

ㅁ 실행블록

: 메소드 호출 시 실행되는 부분

public class Calculator {
	//리턴값이 없는 메소드 선언
	void powerOn() {
		System.out.println("전원을 켭니다.");
	}
	
	//리턴값이 없는 메소든 선언
	void powerOff() {
		System.out.println("전원을 끕니다.");
	}
		
	//호출 시 두 정수 값을 전달받고,
	//호출한 곳을 결과값 int를 리턴하는 메소드 선언
	int plus(int x, int y) {
		int result = x + y;
		return result; //리턴값 지정;
	}
	
	//호출 시 두 정수 값을 전달받고,
	//호출한 곳으로 결과 값 double을 리턴하는 메소드 선언
	double divide(int x, int y) {
		double result = (double)x / (double)y;
		return result; //리턴값 지정;
	
	}

메서드 호출

: 메서드 블록 실행

ㄴ 메서드는 객체 내부에서 호출되지만 다른 객체에서도 호출될 수 있으므로 객체가 상호 작용하는 방식을 정의합니다.

객체가 존재하지 않으면 메서드를 호출할 수 없습니다.

ㄴ 내부 호출 시 메소드명을 사용하여 호출

ㄴ 필드와 마찬가지로 외부 객체에서 호출 시 인용 변수 및 점(.) 연산자 통화 사용


출처: https://velog.io/@00yubin00

메서드에 매개변수가 있는 경우 매개변수의 유형, 순서 및 개수에 따라 다릅니다. 매개변수가 필요합니다

ㄴ 메서드에 반환값이 있는 경우 할당 연산자를 사용하여 변수에 저장할 수 있습니다.

ㄴ 이때 변수 타입은 메소드의 리턴 타입과 동일하거나 자동으로 변환될 수 있습니다.

메소드 오버로딩 메소드 오버로딩

: 메서드 이름은 같지만 매개변수의 유형, 번호 및 순서가 다른 여러 메서드를 선언합니다.

*목적: 각종 파라미터 처리

	// 파라미터 개수, 순서, 타입에 맞게 argument 전달해야 함
	
	// method overloading
	// 메소드 이름이 같아도 파라미터 개수, 순서, 타입이
	// 다르면 다른 메소드
	
	void method1(int i) {
		System.out.println("정수 하나 받는 메소드");
	}
	
	 void method1(long i) {
		 System.out.println("long 하나 받는 메소드");
	 }
	 
	 void method1(int i, int j) {
		 System.out.println("정수 두개 받는 메소드");
	 }
	 
	 void method1(String i, int j) {
		 System.out.println("문자열 하나, 정수 하나 받는 메소드");
	 }
	 
	 void method1(int i, String j) {
		 System.out.println("정수 하나, 메소드 하나 받는 메소드");
	 }

ㄴ 아래 코드 샘플은 이 방법을 오버라이드하여 인수가 1인 경우 정사각형의 넓이를, 인수가 2인 경우 직사각형의 넓이를 계산합니다.

public class Calculator {
	//정사각형의 넓이
	double areaRectangle(double width) {
		return width * width;
	}
	
	//직사각형의 넓이
	double areaRectangle(double width, double height) {
		return width * height;
	}
		public static void main(String() args) {
		//객체 생성
		Calculator myCalcu = new Calculator();
		
		//정사각형 넓이 구하기
		double result1 = myCalcu.areaRectangle(10);
		
		//직사각형의 넓이 구하기
		double result2 = myCalcu.areaRectangle(10,20);
		
		System.out.println("정사각형 넓이 = " + result1);
		System.out.println("직사각형 넓이 = " + result2);
	}


(오늘의 단축키)

클래스 이름에 커서를 놓고 F3을 눌러 클래스 파일로 이동합니다.

Alt + 왼쪽 화살표 키: 원본 파일로 돌아가기