Programming Language/Java

Java 5์ผ์ฐจ ๊ณต๋ถ€(๊ฐ์ฒด์ง€ํ–ฅ, Class, Instance ๋“ฑ)

chaerlo127 2022. 1. 31. 19:04
728x90

1. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ์ฒด๋ž€ ๋ฌด์—‡์ผ๊นŒ? 

๊ฐ์ฒด๋ž€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์กด์žฌํ•˜๊ฑฐ๋‚˜ ์ถ”์ƒ์ ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค ์ค‘์—์„œ ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๊ณ , ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋•Œ, ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ ์†์„ฑ์„ Field, attribute๋ผ๊ณ  ํ•˜๊ณ , ๊ฐ์ฒด๊ฐ€ ํ–‰ํ•˜๋Š” ๋™์ž‘์„ Method๋ผ๊ณ  ํ•œ๋‹ค.

 

๊ฐ์ฒด๋“ค์€ ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•˜๋ฉฐ, ์„œ๋กœ Method๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

University university = new University(); // University ํด๋ž˜์Šค์˜ constructor ํ˜ธ์ถœ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์„ฑ
int courseNum= university.course();// University์˜ method์ธ course ๋ถˆ๋Ÿฌ์˜ค๊ธฐ + return ๊ฐ’ courseNum

 

return_variable = ClassName.methodName(Parameter_variable);
/*
return variable: ๋ฆฌํ„ด ํ•˜๋Š” ๊ฐ’์„ ์ง€์ •
ClassName: ์œ„ ์˜ˆ์‹œ์—์„œ university์— ํ•ด๋‹น, Class๋ฅผ ์ง€์ •ํ•˜๋Š” ์ด๋ฆ„์„ ์„ค์ •ํ•˜์—ฌ ํ•œ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ
parameter variable: method ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ๊ฐ’์„ method ๋ฐ–์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ
*/

 

2. ํด๋ž˜์Šค, ์ธ์Šคํ„ด์Šค, NEW ์—ฐ์‚ฐ์ž

  • ํด๋ž˜์Šค(Class): ํ•„๋“œ, ๋ฉ”์†Œ๋“œ ์ •์˜

[ํด๋ž˜์Šค์˜ ์šฉ๋„]

1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(API: Application Program Interface) ์šฉ๋„ : ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์ด์šฉํ•  ๋ชฉ์ ์œผ๋กœ ์„ค๊ณ„

2. ์‹คํ–‰์šฉ๋„ : ex) main()

-> ๋Œ€๋ถ€๋ถ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์šฉ๋„์ด๊ณ , ์‹คํ–‰์šฉ์€ ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค.

 

[๊ตฌ์„ฑ]

1. Field(Attribute) : ๊ฐ์ฒด์˜ ๊ณ ์œ ์˜ ํŠน์ง•์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’

2. Constructor : new ์—ฐ์‚ฐ์ž๋กœ ํ˜ธ์ถœ ๋˜๋Š” ๋ธ”๋ก, ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”

3. Method : ๊ฐ์ฒด์˜ ๋™์ž‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ธ”๋ก

4. Association : ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ[์ถœ์ฒ˜: ํ•™๊ต ๊ฐ•์˜]

5. Component( = aggregation ) : ์ƒ์†ํ•˜๋Š” ์ž์‹๋“ค[์ถœ์ฒ˜: ํ•™๊ต ๊ฐ•์˜]

  • ์ธ์Šคํ„ด์Šค(Instance): ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด

 

ํด๋ž˜์Šค๊ฐ€ ์„ค๊ณ„๋„๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ์ธ์Šคํ„ด์Šค๋Š” ์„ค๊ณ„๋„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ฌผ๊ฑด์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 4์ผ์ฐจ ์ฐธ์กฐ ํƒ€์ž… ๊ธ€์—์„œ๋„ ์„ค๋ช…์„ ํ–ˆ์ง€๋งŒ, new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 

  • new ์—ฐ์‚ฐ์ž

: constructor ์—ฐ๊ฒฐ(class ๋ผ๋ฆฌ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ฐ์ฒด ์ƒ์„ฑ), ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ์‹œ์ž‘(return)์ฃผ์†Œ ๋ฐ˜ํ™˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

new ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ์ฒด๋ผ๋ฆฌ ์—ฐ๊ฒฐํ•˜์—ฌ ์—ฐ๊ฒฐ๋œ ๊ฐ์ฒด์˜ ๋ฒˆ์ง€๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ , ์ด๋ฅผ ์ €์žฅํ•˜๋ฉด ํ›„์— ๊ทธ ๋ฒˆ์ง€๋กœ ์ด๋™ํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

  • ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜๋”๋ผ๋„, new ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ๊ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋ฉด ์ด๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด์ž. ( ์•„๋ž˜ ์˜ˆ์ œ๋Š” 4์ผ์ฐจ ๊ณต๋ถ€์™€๋„ ๊ฒน์นœ๋‹ค. )
public static void main(String[] args) {
		University university0 = new University();// ๊ฐ๊ฐ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜์ง€๋งŒ
		University university1 = new University();// ์„œ๋กœ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ ๊ฒƒ์ด๋‹ค.
	}

 

 

3. Field(Attribute)

์ƒ์„ฑ์ž, ๋ฉ”์†Œ๋“œ ์ค‘๊ด„ํ˜ธ({}) ๋ธ”๋กœ ๋‚ด๋ถ€์—๋Š” ์„ ์–ธ์ด ๋  ์ˆ˜ ์—†๋‹ค. ์ƒ์„ฑ์ž์™€ ๋ฉ”์†Œ๋“œ ์ค‘๊ด„ํ˜ธ ๋‚ด๋ถ€๋Š” field๊ฐ€ ์•„๋‹Œ local variable์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

variable(๋ณ€์ˆ˜)์˜ ์ข…๋ฅ˜: local, parameter, return

 

 

4. ์ƒ์„ฑ์ž(Constructor)

์ƒ์„ฑ์ž๋Š” new ์—ฐ์‚ฐ์ž๋กœ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ์ฒด ์ดˆ๊ธฐํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ด๋‹นํ•œ๋‹ค.

๊ฐ์ฒด ์ดˆ๊ธฐํ™”: ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ฑฐ๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๊ฐ์ฒด ์‚ฌ์šฉํ•  ์ค€๋น„๋ฅผ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

 

  • Defalut Constructor(๊ธฐ๋ณธ ์ƒ์„ฑ์ž) : ํด๋ž˜์Šค ์ƒ์„ฑ ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” constructor
Class_Name(parameter variable){
}

 

private int a;
private int b;
private int c;
   
 // ์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋”ฉ(overLoading): ํ•œ Class ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋Š”Constructor๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ
public University(int a, int b) {
	this.a = a;
	this.b = b;
}
	
public University(int a, int b, int c) {
	this.a = a;
	this.b = b;
	this.c = c;
}

 

 

public static void main(String[] args) {
		University university0 = new University(1, 2);// ๊ฐ๊ฐ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜์ง€๋งŒ
		University university1 = new University(3, 4);// ์„œ๋กœ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ ๊ฒƒ์ด๋‹ค.
	}

 

  • this(): ํ•œ ํด๋ž˜์Šค ๋‚ด์—์„œ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ

์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๋งŽ๊ณ  ์ค‘๋ณต๋œ ์ฝ”๋”ฉ์ด ๋งŽ๋‹ค๋ฉด this()๋ฅผ ํ†ตํ•ด์„œ ๋ฆฌํŽ™ํ† ๋ง์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

private int a;
private int b;
private int c;
	
 // ์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋”ฉ(overLoading): ํ•œ Class ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋Š”Constructor๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ
public University(int a, int b) {
	this.a = a;
	this.b = b;
}
	
public University(int a, int b, int c) {
	this(a, b); //this(); ํ•จ์ˆ˜ ์‚ฌ์šฉ, a,b ๊ฐ€ ์ค‘๋ณต๋˜๊ธฐ ๋•Œ๋ฌธ
	this.c = c;
}

 

 

5. Method

์„ ์–ธ๋ถ€(Head)์™€ ์‹คํ–‰๋ธ”๋ก(Body)์œผ๋กœ ๊ตฌ์„ฑ

  • Head(์„ ์–ธ๋ถ€): ๋ฆฌํ„ดํƒ€์ž…, ๋ฉ”์†Œ๋“œ ์ด๋ฆ„, ๋งค๊ฐœ ๋ณ€์ˆ˜ ์„ ์–ธ
  • Body

๋งค๊ฐœ๋ณ€์ˆ˜ ์„ ์–ธ์˜ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

public static void main(String[] args) {
		
		Calculator calculator = new _250Calculator();
		int sum = calculator.plus(2, 3);
		System.out.println(sum); // 5

	}

 

public class Calculator {
	public Calculator() {
		
	}

	public int plus(int i, int j) {
		int sum = i + j;
		return sum;
	}

}

 

๊ทธ๋ ‡๋‹ค๋ฉด, ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ชจ๋ฅผ๊ฒฝ์šฐ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐฐ์—ด ํƒ€์ž…์œผ๋กœ ์„ ์–ธ์„ ํ•ด์•ผํ•œ๋‹ค.

public static void main(String[] args) {
	Child child = new Child();
		
		int sum = child.plus(new int[] {1, 3, 5, 7, 9});
		System.out.println(sum);
	}

 

 

public class Child {

	public Child() {
	}
	
	public int plus(int[] array) {
		int sum = 0;
		for(int i = 0; i<array.length; i++) {
			sum+=array[i];
		}
		return sum;
	}

}

 

๋ฉ”์†Œ๋“œ๋„ ์ƒ์„ฑ์ž์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.(method ๋“ค๋ผ๋ฆฌ ์ด๋ฆ„์€ ๊ฐ™์ง€๋งŒ, ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…, ์ˆœ์„œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค.-> constructor overloading ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด)

 

 

[์ถœ์ฒ˜] 

ํ˜ผ๊ณต์ž๋ฐ” P 212~269

728x90