개발 지식, 슀크립트/Java 문법

6.클래슀(혼곡자)[6-1]

μ‹œνλ¦¬ν‹°μ§€ν˜Έ 2023. 9. 27. 11:25

6-1 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°

 

객체 : 물리적으둜 μ‘΄μž¬ν•˜κ±°λ‚˜ μΆ”μƒμ μœΌλ‘œ 생각할 수 μžˆλŠ” 것 μ€‘μ—μ„œ μžμ‹ μ˜ 속성을 κ°€μ§€κ³  μžˆμœΌλ©΄μ„œ 식별 κ°€λŠ₯ν•œ 것을 λ§ν•œλ‹€.

κ°μ²΄λŠ” 속성과 λ™μž‘μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€. ex) μ‚¬λžŒμ€ 이름, λ‚˜μ΄ λ“±μ˜ 속성과 웃닀, κ±·λ‹€ λ“±μ˜ λ™μž‘μ΄ 있고, μžλ™μ°¨λŠ” 색깔, λͺ¨λΈλͺ…λ“±μ˜ 속성과 달린닀. λ©ˆμΆ˜λ‹€. λ“±μ˜ λ™μž‘μ΄ μžˆλ‹€. ==> μžλ°”μ—μ„œ 속성과 λ™μž‘μ„ 각각 ν•„λ“œμ™€ λ©”μ†Œλ“œλΌκ³  ν•œλ‹€.

 

객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° : 객체λ₯Ό λ§Œλ“€κ³  이λ₯Ό 쑰립해 μ™„μ„±λœ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” 기법

 

λ©”μ†Œλ“œ : κ°μ²΄λ“€ μ‚¬μ΄μ˜ μƒν˜Έμž‘μš© μˆ˜λ‹¨, λ‹€λ₯Έ 객체의 κΈ°λŠ₯을 μ΄μš©ν•˜λŠ” 것 = λ©”μ†Œλ“œ 호좜

 

λ©”μ†Œλ“œ 호좜: λ¦¬ν„΄κ°’ = μ „μžκ³„μ‚°κΈ°κ°μ²΄.λ©”μ†Œλ“œ(λ§€κ°œκ°’1, λ§€κ°œκ°’2, ...)

->

int result = Calculator.add(10,20);

 

객체 κ°„μ˜ 관계 : κ°μ²΄λŠ” 개 λ³„μ μœΌλ‘œ μ‚¬μš©λ  수 μžˆμ§€λ§Œ, λŒ€λΆ€λΆ„ λ‹€λ₯Έ 객체와 관계λ₯Ό λ§Ίκ³  μžˆλ‹€. 

1. μ§‘ν•© 관계 : κ°μ²΄λŠ” ν•˜λ‚˜μ˜ λΆ€ν’ˆμ΄κ³  ν•˜λ‚˜λŠ” μ™„μ„±ν’ˆμ— ν•΄λ‹Ή

2. μ‚¬μš© 관계: 객체 κ°„μ˜ μƒν˜Έμž‘μš©μ„ λ§ν•œλ‹€.

3. 상속 관계: μƒμœ„(λΆ€λͺ¨) 객체λ₯Ό 기반으둜 ν•˜μœ„(μžμ‹) 객체λ₯Ό μƒμ„±ν•˜λŠ” 관계λ₯Ό λ§ν•œλ‹€.

-> 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ λ§Œλ“€κ³ μž ν•˜λŠ” μ™„μ„±ν’ˆμΈ 객체λ₯Ό λͺ¨λΈλ§ν•˜κ³ , μ§€λ°₯ 관계에 μžˆλŠ” λΆ€ν’ˆ 객체와 μ‚¬μš© 관계에 μžˆλŠ” 객체λ₯Ό ν•˜λ‚˜μ”© μ„€κ³„ν•œ ν›„, μ‘°λ¦½ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λŠ” 기법.

 

 

클래슀(섀계도) : 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ ν•„λ“œμ™€ λ©”μ†Œλ“œκ°€ μ •μ˜λ˜μ–΄ μžˆλ‹€.

μΈμŠ€ν„΄μŠ€ : ν΄λž˜μŠ€λ‘œλΆ€ν„° λ§Œλ“€μ–΄μ§„ 객체λ₯Ό λ§ν•œλ‹€.

 

클래슀 μ„ μ–Έ

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

 

μ‹λ³„μž μž‘μ„± κ·œμΉ™μ€ λ‹€μŒκ³Ό κ°™λ‹€.

1. ν•˜λ‚˜ μ΄μƒμ˜ 문자둜 이루어져야 ν•œλ‹€.

2. 첫 κΈ€μžμ—λŠ” μˆ«μžκ°€ 올 수 μ—†λ‹€.

3.$,_ μ™Έμ˜ 특수 λ¬ΈμžλŠ” μ‚¬μš©ν•  수 μ—†λ‹€.

4.μžλ°” ν‚€μ›Œλ“œλŠ” μ‚¬μš©ν•  수 μ—†λ‹€.

 

public class 클래슀 이름 {

}

 

class Tire{

}

 

*public μ ‘κ·Ό μ œν•œμžλŠ” 파일 이름과 λ™μΌν•œ μ΄λ¦„μ˜ 클래슀 μ„ μ–Έμ—λ§Œ 뢙일 수 μžˆλ‹€.

 

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

클래슀λ₯Ό μ„ μ–Έν•œ λ‹€μŒ, μ»΄νŒŒμΌμ„ ν–ˆλ‹€λ©΄ 객체λ₯Ό 생성할 섀계도가 λ§Œλ“€μ–΄μ§„ μ…ˆ. 클래슀둜 λΆ€ν„° 객체λ₯Ό μƒμ„±ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 newμ—°μ‚°μž μ‚¬μš©

 

new 클래슀();

-> new μ—°μ‚°μžλŠ” νž™ μ˜μ—­μ— 객체λ₯Ό μƒμ„±μ‹œν‚¨ ν›„ 객체의 λ²ˆμ§€λ₯Ό λ¦¬ν„΄ν•˜λ„λ‘ λ˜μ–΄ μžˆλ‹€.

 

클래슀 λ³€μˆ˜ = new 클래슀();

-> μ—¬κΈ°μ„œ λ³€μˆ˜λŠ” μŠ€νƒμ˜μ—­μ— μž…λ ₯이 되고, κ·Έ μ˜†μ— νž™ μ˜μ—­μ˜ 객체λ₯Ό μ°Έμ‘°ν•  객체의 λ²ˆμ§€λ₯Ό μ €μž₯ν•œλ‹€.

 

Student와 StudentExample 클래슀의 μš©λ„

 

public class StudentExample{

  public static void main(String[] args){

  Student s1 = new Student();

   }

}

 

---------

 

public class Student {

}

 

-> ν΄λž˜μŠ€λŠ” 두 κ°€μ§€ μš©λ„κ°€ μžˆλ‹€. ν•˜λ‚˜λŠ” 라이브러리(API)용이고 λ‹€λ₯Έ ν•˜λ‚˜λŠ” μ‹€ν–‰μš©μ΄λ‹€. 라이브러리 ν΄λž˜μŠ€λŠ” λ‹€λ₯Έ ν΄λž˜μŠ€μ—μ„œ μ΄μš©ν•  λͺ©μ μœΌλ‘œ 섀계 되고, ν”„λ‘œκ·Έλž¨ μ „μ²΄μ—μ„œ μ‚¬μš©λ˜λŠ” ν΄λž˜μŠ€κ°€ 100이라면 99κ°œλŠ” 라이브러리 ν΄λž˜μŠ€μ΄λ‹€.

 

μ‹€ν–‰ ν΄λž˜μŠ€λŠ” ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ μ§„μž…μ μΈ main() λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

 

 

클래슀의 ꡬ성 멀버

 

ν•„λ“œ: ν•„λ“œλŠ” 개게의 고유 데이터, λΆ€ν’ˆ 객체, μƒνƒœ 정보λ₯Ό μ €μž₯ν•˜λŠ” 곳이닀. μ„ μ–Έ ν˜•νƒœλŠ” λ³€μˆ˜μ™€ λΉ„μŠ·ν•˜μ§€λ§Œ, ν•„λ“œλ₯Ό λ³€μˆ˜λΌκ³  λΆ€λ₯΄μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. λ³€μˆ˜λŠ” μƒμ„±μžμ™€ λ©”μ†Œλ“œ λ‚΄μ—μ„œλ§Œ μ‚¬μš©λ˜κ³  μƒμ„±μžμ™€ λ©”μ†Œλ“œκ°€ μ‹€ν–‰ μ’…λ£Œλ˜λ©΄ μžλ™ μ†Œλ©Έν•œλ‹€. ν•˜μ§€λ§Œ ν•„λ“œλŠ” μƒμ„±μžμ™€ λ©”μ†Œλ“œ μ „μ²΄μ—μ„œ μ‚¬μš©λ˜λ©° 객체가 μ†Œλ©Έλ˜μ§€ μ•ŠλŠ” ν•œ 객체와 ν•¨κ»˜ μ‘΄μž¬ν•œλ‹€.

 

μƒμ„±μž: μƒμ„±μžλŠ” new μ—°μ‚°μžλ‘œ ν˜ΈμΆœλ˜λŠ” νŠΉλ³„ν•œ μ€‘κ΄„ν˜Έ {} 블둝이닀. μƒμ„±μžμ˜ 역할은 객체 생성 μ‹œ μ΄ˆκΈ°ν™”λ₯Ό λ‹΄λ‹Ήν•œλ‹€. ν•„λ“œλ₯Ό μ΄ˆκΈ°ν™”ν•˜κ±°λ‚˜ λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•΄μ„œ 객체λ₯Ό μ‚¬μš©ν•  μ€€λΉ„λ₯Ό ν•œλ‹€. μƒμ„±μžλŠ” λ©”μ†Œλ“œμ™€ λΉ„μŠ·ν•˜κ²Œ μƒκ²Όμ§€λ§Œ, 클래슀 μ΄λ¦„μœΌλ‘œ λ˜μ–΄ 있고 리턴 νƒ€μž…μ΄ μ—†λ‹€.

 

λ©”μ†Œλ“œ: λ©”μ†Œλ“œλŠ” 객체의 λ™μž‘μ— ν•΄λ‹Ήν•˜λŠ” μ€‘κ΄„ν˜Έ{} 블둝을 λ§ν•œλ‹€. μ€‘κ΄„ν˜Έ 블둝은 이름을 κ°€μ§€κ³  μžˆλŠ”λ°, 이거싱 λ©”μ†Œλ“œ 이름이닀. λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜κ²Œ 되면 μ€‘κ΄„ν˜Έ 블둝에 μžˆλŠ” λͺ¨λ“  μ½”λ“œλ“€μ΄ μΌκ΄„μ μœΌλ‘œ μ‹€ν–‰λœλ‹€. μ΄λ•Œ λ©”μ†Œλ“œλŠ” ν•„λ“œλ₯Ό 읽고 μˆ˜μ •ν•˜λŠ” 역할도 ν•˜μ§€λ§Œ, λ‹€λ₯Έ 객체λ₯Ό μƒμ„±ν•΄μ„œ λ‹€μ–‘ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κΈ°λ„ ν•œλ‹€. λ©”μ†Œλ“œλŠ” 객체 κ°„μ˜ 데이터λ₯Ό μ „λ‹¬ν•˜λŠ” μˆ˜λ‹¨μ΄λ‹€. μ™ΈλΆ€(ν˜ΈμΆœν•œ κ³³)λ‘œλΆ€ν„° 맀개 값을 λ°›μ•„ 싀행에 μ΄μš©ν•˜κ³ , μ‹€ν–‰ ν›„ κ²°κ³Ό 값을 μ™ΈλΆ€(ν˜ΈμΆœν•œ κ³³)둜 리턴할(돌렀 쀄) μˆ˜λ„ μžˆλ‹€.