nyximos.log

[Java] ํด๋ž˜์Šค ๋ณธ๋ฌธ

Programming/JAVA

[Java] ํด๋ž˜์Šค

nyximos 2022. 8. 5. 20:36

๐Ÿ‘ฉ‍๐Ÿš€ ๋ชฉํ‘œ

์ž๋ฐ”์˜ Class์— ๋Œ€ํ•ด ํ•™์Šตํ•˜์„ธ์š”

๐Ÿ‘ฉ‍๐Ÿ’ป ํ•™์Šตํ•  ๊ฒƒ

  • ํด๋ž˜์Šค ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๊ฐ์ฒด ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• (new ํ‚ค์›Œ๋“œ ์ดํ•ดํ•˜๊ธฐ)
  • ๋ฉ”์†Œ๋“œ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์ƒ์„ฑ์ž ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • this ํ‚ค์›Œ๋“œ ์ดํ•ดํ•˜๊ธฐ

๐Ÿ‘ฉ‍๐Ÿ”ฌ ๊ณผ์ œ

  • int ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Node ๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜์„ธ์š”.
  • int value, Node left, right๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • BinrayTree๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์ฃผ์–ด์ง„ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” bfs(Node node)์™€ dfs(Node node) ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์„ธ์š”.
  • DFS๋Š” ์™ผ์ชฝ, ๋ฃจํŠธ, ์˜ค๋ฅธ์ชฝ ์ˆœ์œผ๋กœ ์ˆœํšŒํ•˜์„ธ์š”.

 

 

 

 

ํด๋ž˜์Šค ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

ํด๋ž˜์Šค

๊ฐ์ฒด๋ฅผ ์ •์˜ ํ•ด์ฃผ๋Š” ํ‹€, ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ

 

ํด๋ž˜์Šค์˜ ๊ตฌ์„ฑ

  • ํ•„๋“œ : ๊ฐ์ฒด์˜ ์ƒํƒœ
  • ๋ฉ”์†Œ๋“œ : ๊ฐ์ฒด์˜ ๋™์ž‘
  • ์ƒ์„ฑ์ž : ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๋Š” ๋ฉ”์†Œ๋“œ
class ํด๋ž˜์Šค์ด๋ฆ„ {
	
    ์ œ์–ด์ž ์ž๋ฃŒํ˜• ํ•„๋“œ๋ช…;
    
    ์ œ์–ด์ž ๋ฐ˜ํ™˜ํ˜• ๋ฉ”์†Œ๋“œ๋ช…(){
    
    }
    
    ์ œ์–ด์ž ์ƒ์„ฑ์ž๋ช…() {
    
    }
    
}

 

 

์ œ์–ด์ž modifier

ํด๋ž˜์Šค, ๋ณ€์ˆ˜ ๋˜๋Š” ๋ฉ”์„œ๋“œ์˜ ์„ ์–ธ๋ถ€์— ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ๋ถ€๊ฐ€์ ์ธ ์˜๋ฏธ๋ฅผ ๋ณด์—ฌ

์ ‘๊ทผ ์ œ์–ด์ž์™€ ๊ทธ ์™ธ ์ œ์–ด์ž๊ฐ€ ์žˆ๋‹ค.

 

์ ‘๊ทผ ์ œ์–ด์ž access modifier

๋ฉค๋ฒ„, ํด๋ž˜์Šค์— ์‚ฌ์šฉ๋˜์–ด, ํ•ด๋‹นํ•˜๋Š” ๋ฉค๋ฒ„ ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์ง€ ์•Š์„ ๋•Œ๋Š” default์ž„์„ ๋œปํ•œ๋‹ค.

์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ๋‚ด๋ถ€์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์„ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•จ์ด๋‹ค.

์ ‘๊ทผ ์ œ์–ด์ž ๊ฐ™์€ ํด๋ž˜์Šค ๊ฐ™์€ ํŒจํ‚ค์ง€ ์ž์‹ ํด๋ž˜์Šค ์ „์ฒด
public O O O O
protected O O O  
์—†์Œ O O    
private O      

 

static

ํด๋ž˜์Šค ๋ณ€์ˆ˜(static ๋ณ€์ˆ˜)๋Š” ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋ฅผ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณต์œ ํ•œ๋‹ค.

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

 

final

๋ณ€์ˆ˜์ผ ๊ฒฝ์šฐ ์ƒ์ˆ˜๊ฐ€ ๋˜๋ฉฐ

๋ฉ”์†Œ๋“œ์— ์‚ฌ์šฉ๋˜๋ฉด ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ์—†๊ฒŒ ๋œ๋‹ค.

ํด๋ž˜์Šค์— ์‚ฌ์šฉ๋˜๋ฉด ์ƒ์†์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

abstract

์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ

 

 

 

 

๊ฐ์ฒด ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• (new ํ‚ค์›Œ๋“œ ์ดํ•ดํ•˜๊ธฐ)

1. ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜ ์„ ์–ธ

๋ฉ”๋ชจ๋ฆฌ์— ์ฐธ์กฐ๋ณ€์ˆ˜ t๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์ด ๋งˆ๋ จ๋œ๋‹ค.

ํด๋ž˜์Šค๋ช… ๋ณ€์ˆ˜๋ช…;
Fruit apple;

 

2. ๊ฐ์ฒด ์ƒ์„ฑ ํ›„ ์ฐธ์กฐ ๋ณ€์ˆ˜์™€ ๊ฐ์ฒด์˜ ์—ฐ๊ฒฐ

์—ฐ์‚ฐ์ž new์— ์˜ํ•ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋นˆ ๊ณต๊ฐ„์— ์ƒ์„ฑ๋œ๋‹ค.

๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” ๊ฐ ์ž๋ฃŒํ˜•์— ํ•ด๋‹นํ•˜๋Š” ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

์ฐธ์กฐ ๋ณ€์ˆ˜๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค๋ฃฌ๋‹ค.

๋ณ€์ˆ˜๋ช… = new ํด๋ž˜์Šค๋ช…();
apple = new Fruit();

 

 

๐Ÿ˜ฎ ์—ฐ์‚ฐ์ž new๊ฐ€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ƒ์„ฑ์ž๊ฐ€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

 

 

๋ฉ”์†Œ๋“œ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ •์˜๋ถ€์™€ ํ˜ธ์ถœ๋ถ€๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

// ์ ‘๊ทผ์ง€์ •์ž ๋ฆฌํ„ดํƒ€์ž… ๋ฉ”์„œ๋“œ๋ช…(ํƒ€์ž… ๋ณ€์ˆ˜๋ช…)
    public void count(){	// ์„ ์–ธ๋ถ€
	
    // ํ˜ธ์ถœ๋ถ€
    
    }

 

 

 

 

์ƒ์„ฑ์ž ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๋Š” ๋ฉ”์†Œ๋“œ
  • ์ƒ์„ฑ์ž ์ด๋ฆ„์€ ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ๊ฐ™์•„์•ผํ•œ๋‹ค.
  • ๋ฐ˜ํ™˜๊ฐ’์„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค. (void ์•ˆ๋ถ™์ž„)
  • ๊ฐœ๋ฐœ์ž ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€ ์•Š๋”๋ผ๋„ ์ž๋™์ ์œผ๋กœ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ง„๋‹ค. (๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ง„๋‹ค.)
  • ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. (์ƒ์„ฑ์ž๋„ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๊ฐ€๋Šฅ)
class ํด๋ž˜์Šค๋ช…(){

	int x;
    int y;

    ํด๋ž˜์Šค๋ช…(){

    }

    ํด๋ž˜์Šค๋ช…(ํƒ€์ž… ๋ณ€์ˆ˜๋ช…) {

    }
}


class Position(){

	Position(){
    
    }
    
    Position(int x, int y){
    	this.x = x;
        this.y = y;
    }

}

 

 

๊ธฐ๋ณธ ์ƒ์„ฑ์ž default constructor

์ปดํŒŒ์ผ ํ•  ๋•Œ, ์†Œ์ŠคํŒŒ์ผ(*.java)์˜ ํด๋ž˜์Šค์— ์ƒ์„ฑ์ž๊ฐ€ ํ•˜๋‚˜๋„ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ปดํŒŒ์ผํ•œ๋‹ค.

 

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž

๋ฉ”์„œ๋“œ์ฒ˜๋Ÿผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ํ˜ธ์ถœ ์‹œ ๊ฐ’์„ ๋„˜๊ฒจ๋ฐ›์•„์„œ ์ธ์Šคํ„ด์Šค์˜ ์ดˆ๊ธฐํ™” ์ž‘์—…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

this ํ‚ค์›Œ๋“œ ์ดํ•ดํ•˜๊ธฐ

์ธ์Šคํ„ด์Šค๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ์ฐธ์กฐํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜

ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.

ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ

 

์ƒ์„ฑ์ž์—์„œ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž ํ˜ธ์ถœํ•˜๊ธฐ

 

 

์ƒ์„ฑ์ž์—์„œ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” this()

- ์ƒ์„ฑ์ž์˜ ์ด๋ฆ„์œผ๋กœ ํด๋ž˜์Šค์ด๋ฆ„ ๋Œ€์‹  this๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- ํ•œ ์ƒ์„ฑ์ž์—์„œ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ์ฒซ ์ค„์—์„œ๋งŒ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Class Fruit {
    String name;
    String color;
    int price;
    
    Fruit() {
    	this("apple", "red", 1000)
    }
    
    Fruit(String name, String color, int price) {
    	this.name = name;
        this.color = color;
        this.price = price;
    }
}

 

๊ฐ์ฒด ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜ this

- this() ์ƒ์„ฑ์ž์™€๋Š” ๋‹ค๋ฅด๋‹ค.

- ์ธ์Šคํ„ด์Šค ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค์˜ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.

- ๋ชจ๋“  ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ์— ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์ˆจ๊ฒจ์ง„ ์ฑ„๋กœ ์กด์žฌํ•œ๋‹ค.

- ์„ ์–ธ ์•ˆํ•ด๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅ

 

 

 

 

๐Ÿ‘ฉ‍๐Ÿ”ฌ ๊ณผ์ œ

  • int ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Node ๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜์„ธ์š”.
  • int value, Node left, right๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • BinrayTree๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์ฃผ์–ด์ง„ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” bfs(Node node)์™€ dfs(Node node) ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์„ธ์š”.
  • DFS๋Š” ์™ผ์ชฝ, ๋ฃจํŠธ, ์˜ค๋ฅธ์ชฝ ์ˆœ์œผ๋กœ ์ˆœํšŒํ•˜์„ธ์š”.

 

DFS Depth-First Search

๊นŠ์ด ์šฐ์„  ๊ฒ€์ƒ‰

 

 

 

 

 

 

BFS Breadth-First Search

๋„“์ด ์šฐ์„  ๊ฒ€์ƒ‰

 

 

 

 

 

'Programming > JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] ํŒจํ‚ค์ง€  (0) 2022.08.17
[Java] ์ƒ์†  (0) 2022.08.12
[Java] ์ œ์–ด๋ฌธ  (0) 2022.08.04
[Java] ์—ฐ์‚ฐ์ž  (0) 2022.02.02
[Java] ์ž๋ฐ” ๋ฐ์ดํ„ฐ ํƒ€์ž…, ๋ณ€์ˆ˜ ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด  (0) 2022.01.14