λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

STUDY/JAVA

JAVA - 객체지ν–₯ν”„λ‘œκ·Έλž˜λ°(ν•„λ“œ, μƒμ„±μž)

λ°˜μ‘ν˜•
 OPP(객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°) ? 
    λΆ€ν’ˆμ— ν•΄λ‹Ήν•˜λŠ” 객체λ₯Ό λ¨Όμ € λ§Œλ“€κ³ , 객체λ₯Ό 쑰립해 ν”„λ‘œκ·Έλž¨μ„ μ™„μ„±ν•˜λŠ” 기법
    μ™„μ„±ν’ˆ 객체λ₯Ό λͺ¨λΈλ§ν•˜κ³ , 집합관계에 μžˆλŠ” λΆ€ν’ˆ 객체와 μ‚¬μš© 관계에 μžˆλŠ” 객체λ₯Ό ν•˜λ‚˜μ”© 섀계 ν•œ ν›„ 쑰립

 

객체

ⓐ 속성 (=field)

β“‘ λ™μž‘ (=method)

 

객체λͺ¨λΈλ§(Object Modeling) : ν˜„μ‹€μ„Έκ³„μ˜ 객체λ₯Ό μ†Œν”„νŠΈμ›¨μ–΄ 객체둜 μ„€κ³„ν•˜λŠ” 것

 

객체가 λ‹€λ₯Έ 객체의 κΈ°λŠ₯을 μ΄μš©ν•˜λŠ” 것 = method 호좜

객체에 λ„νŠΈμ—°μ‚°μž(.)을 뢙이고 λ©”μ†Œλ“œλ₯Ό λ©”μ†Œλ“œ 이름을 기술

리턴값 = 객체.λ©”μ†Œλ“œ(λ§€κ°œκ°’1, λ§€κ°œκ°’2, ....)

 

κ°μ²΄κ°„μ˜ 관계

λŒ€λΆ€λΆ„μ˜ κ°μ²΄λŠ” λ‹€λ₯Έ 객체와 관계λ₯Ό λ§Ίκ³  μžˆλ‹€.

ⓐ 집합관계 : κ°μ²΄λŠ” ν•˜λ‚˜λŠ” λΆ€ν’ˆ, ν•˜λ‚˜λŠ” μ™„μ„±ν’ˆμ— ν•΄λ‹Ή

β“‘ 상속관계 : λΆ€λͺ¨κ°μ²΄λ₯Ό 기반으둜 μžμ‹κ°μ²΄λ₯Ό 생성

β“’ μ‚¬μš©κ΄€κ³„ : κ°μ²΄κ°„μ˜ μƒν˜Έμž‘μš©(객체가 λ©”μ†Œλ“œλ₯Ό 호좜)

 

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ νŠΉμ§•

1. μΊ‘μŠν™”

 : 객체의 ν•„λ“œ, λ©”μ†Œλ“œλ₯Ό ν•˜λ‚˜λ‘œ λ¬Άκ³ , μ‹€μ œ κ΅¬ν˜„ λ‚΄μš©μ„ κ°μΆ”λŠ” 것

   μ™ΈλΆ€κ°μ²΄λŠ” κ°μ²΄λ‚΄λΆ€μ˜ ꡬ쑰λ₯Ό μ•Œμ§€ λͺ»ν•˜λ©°, 객체가 λ…ΈμΆœν•΄μ„œ μ œκ³΅ν•˜λŠ” ν•„λ“œμ™€ λ©”μ†Œλ“œλ§Œ 이용 κ°€λŠ₯

   μ™ΈλΆ€μ˜ 잘λͺ»λœ μ‚¬μš©μœΌλ‘œ 객체가 μ†μƒλ˜μ§€ μ•Šκ²Œ ν•˜κΈ° μœ„ν•΄ μ‚¬μš©  => μ ‘κ·Ό μ œν•œμž μ‚¬μš©

 

2. 상속

  : μƒμœ„κ°μ²΄κ°€ 가지고 μžˆλŠ” ν•„λ“œμ™€ λ©”μ†Œλ“œλ₯Ό ν•˜μœ„ 객체가 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•΄μ€Œ

    μƒμœ„κ°μ²΄λ₯Ό μž¬μ‚¬μš© ν•΄μ„œ ν•˜μœ„ 객체λ₯Ό 쉽고 빨리 섀계

    반볡된 μ½”λ“œμ˜ 쀑볡을 μ€„μ—¬μ€Œ

    μƒμœ„κ°œμ²΄μ˜ μˆ˜μ • > λͺ¨λ“  ν•˜μœ„ κ°μ²΄λ“€μ˜ μˆ˜μ •  >> μœ μ§€λ³΄μˆ˜ μ‹œκ°„μ„ μ΅œμ†Œν™”

 

3. λ‹€ν˜•μ„±

  : 같은 νƒ€μž…μ΄μ§€λ§Œ μ‹€ν–‰ κ²°κ³Όκ°€ λ‹€μ–‘ν•œ 객체λ₯Ό μ΄μš©ν•  수 μžˆλŠ” μ„±μ§ˆ

 

객체와 클래슀

클래슀(섀계도) ⊃ ν•„λ“œ&λ©”μ†Œλ“œ

클래슀둜 λ§Œλ“€μ–΄μ§„ 객체 = μΈμŠ€ν„΄μŠ€

 

클래슀 μ„ μ–Έ

μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” 객체λ₯Ό κ΅¬μƒν–ˆλ‹€λ©΄ κ·Έ 객체의 λŒ€ν‘œμ΄λ¦„μ„ ν•˜λ‚˜ κ²°μ •ν•˜κ³  이것을 클래슀 μ΄λ¦„μœΌλ‘œ ν•œλ‹€.

                         |                                        |

                      μžλ™μ°¨                                 Car

 

클래슀 이름을 μ •ν–ˆλ‹€λ©΄ "Car.java"둜 μ†ŒμŠ€ νŒŒμΌμ„ 생성

μ†ŒμŠ€ νŒŒμΌμ„ μƒμ„±ν–ˆλ‹€λ©΄ μ†ŒμŠ€νŒŒμΌμ„ μ—΄κ³  클래슀λ₯Ό μ„ μ–Έν•΄μ€€λ‹€.

public class Car{

}

public class λŠ” 클래슀λ₯Ό μ„ μ–Έν•  λ•Œ μ‚¬μš©

μΌλ°˜μ μœΌλ‘œλŠ” μ†ŒμŠ€ νŒŒμΌλ‹Ή ν•˜λ‚˜μ˜ 클래슀λ₯Ό μ„ μ–Έ, ν•˜μ§€λ§Œ 두 개 μ΄μƒμ˜ 클래슀 선언도 κ°€λŠ₯함

public class Car{

}

class Person {

}

λ‘κ°œ μ΄μƒμ˜ ν΄λž˜μŠ€κ°€ μ„ μ–Έλœ μ†ŒμŠ€νŒŒμΌμ„ 컴파일 ν•˜λ©΄ λ°”μ΄νŠΈ μ½”λ“œ νŒŒμΌμ€ 클래슀λ₯Ό μ„ μ–Έν•œ 개수만큼 생김

μœ„ μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜λ©΄ Car.class, Person.class 두 가지가 생성됨

파일 이름과 λ™μΌν•œ μ΄λ¦„μ˜ ν΄λž˜μŠ€μ—λ§Œ public μ ‘κ·Ό μ œν•œμž μ‚¬μš© κ°€λŠ₯

 

객체 생성과 클래슀 λ³€μˆ˜

μ»΄νŒŒμΌμ„ ν•˜λ©΄ 섀계도 λ§Œλ“€μ–΄μ§„ μƒνƒœ.

ν΄λž˜μŠ€λ‘œλΆ€ν„° 객체λ₯Ό μƒμ„±ν•˜λ €λ©΄ new μ—°μ‚°μžλ₯Ό μ‚¬μš©

new 클래슀();

new λ’€μ—λŠ” 클래슀(); ν˜•μ‹μ˜ μƒμ„±μžκ°€ 옴

new μ—°μ‚°μžλ‘œ μƒμ„±λœ κ°μ²΄λŠ” νž™ μ˜μ—­μ— μƒμ„±λ˜κ³ , 객체의 μ£Όμ†Œλ₯Ό 리턴함

 

클래슀의 ꡬ성멀버

ⓐ ν•„λ“œ : 객체의 데이터가 μ €μž₯λ˜λŠ” κ³³                     int fieldName;

      μƒμ„±μžμ™€ λ©”μ†Œλ“œ μ „μ²΄μ—μ„œ μ‚¬μš©λ˜λ©° 객체가 μ†Œλ©Έλ˜μ§€ μ•ŠλŠ” ν•œ 객체와 ν•¨κ»˜ μ’…λ£Œλ¨

     != λ³€μˆ˜(μƒμ„±μžμ™€ λ©”μ†Œλ“œ λ‚΄μ—μ„œλ§Œ μ‚¬μš©λ˜κ³  μƒμ„±μžμ™€ λ©”μ†Œλ“œκ°€ μ‹€ν–‰ μ’…λ£Œλ˜λ©΄ μžλ™ μ†Œλ©Έ)

public class Car{
 //ν•„λ“œ
 String company = "kia";
 String color = "black";
 int MaxSpeed = 350;
 }

     

β“‘ μƒμ„±μž : 객체 생성 μ‹œ μ΄ˆκΈ°ν™” μ—­ν•  λ‹΄λ‹Ή                ClassName() {.... }

    new μ—°μ‚°μžλ‘œ ν˜ΈμΆœλ˜λŠ” { }블둝

* μƒμ„±μž μ˜€λ²„λ‘œλ”©(OverLoading)

   : 맀개 λ³€μˆ˜λ₯Ό λ‹¬λ¦¬ν•˜λŠ” 같은 μ΄λ¦„μ˜ μƒμ„±μžλ₯Ό μ—¬λŸ¬κ°œ μ„ μ–Έ ν•˜λŠ” 것

 * μ£Όμ˜ν•  점은 맀개 λ³€μˆ˜μ˜ νƒ€μž…, 개수, μ„ μ–Έλœ μˆœμ„œκ°€ λ˜‘κ°™μ„ 경우,

   λ§€κ°œλ³€μˆ˜ μ΄λ¦„λ§Œ λ°”κΎΈλŠ” 것은 μƒμ„±μž μ˜€λ²„λ‘œλ”©μ΄ μ•„λ‹˜

 

* this()

 μƒμ„±μž μ˜€λ²„λ‘œλ”©μ΄ λ§Žμ•„μ§ˆ 경우 μƒμ„±μž κ°„μ˜ μ€‘λ³΅λœ μ½”λ“œκ°€ λ°œμƒν•  수 μžˆλ‹€.

 μƒμ„±μžμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  λ•Œμ—λŠ” this() μ½”λ“œλ₯Ό μ‚¬μš©ν•¨

  this() λŠ” μžμ‹ μ˜ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” μ½”λ“œλ‘œ λ°˜λ“œμ‹œ μƒμ„±μžμ˜ 첫 μ€„μ—μ„œλ§Œ ν—ˆμš©λœλ‹€.

 

 

 

λ°˜μ‘ν˜•

'STUDY > JAVA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

JAVA - 정적멀버와 static & 싱글톀(singleton)  (0) 2022.04.18
JAVA - λ©”μ†Œλ“œ  (0) 2022.04.18
JAVA - μ—΄κ±°νƒ€μž…  (0) 2022.04.13
JAVA - ν–₯μƒλœ forλ¬Έ  (0) 2022.04.13
JAVA - 닀차원 λ°°μ—΄  (0) 2022.04.13