관리 메뉴

gi_dor

Java (6) 객체지ν–₯ - 클래슀 , 객체 , λ©”μ„œλ“œ , μƒμ„±μž , μ˜€λ²„λ‘œλ”© λ³Έλ¬Έ

Language/Java

Java (6) 객체지ν–₯ - 클래슀 , 객체 , λ©”μ„œλ“œ , μƒμ„±μž , μ˜€λ²„λ‘œλ”©

기돌 2023. 11. 1. 19:26
728x90

πŸ“š κ΅­λΉ„ 16 , 17 일차


 

πŸ”Ή  Java의 주석

단일행 주석 : ν•΄λ‹Ή 행을 주석 μ²˜λ¦¬ν•œλ‹€

//  주석 λ‚΄μš©

 

닀쀑행 주석 : λ²”μœ„λ‚΄μ˜ λͺ¨λ“  행을 주석 μ²˜λ¦¬ν•œλ‹€

/*
	μ£Όμ„λ‚΄μš©
	μ£Όμ„λ‚΄μš©
*/

 

μžλ°” λ¬Έμ„œ 주석 :  Java API λ¬Έμ„œ μž‘μ„±μ— μ‚¬μš©λ˜λŠ” 주석

/**

*/


πŸ”Ή 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°

  • λΆ€ν’ˆμ— ν•΄λ‹Ήν•˜λŠ” 객체듀을 λ§Œλ“€κ³  , κ·Έ 객체λ₯Ό 쑰립해 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“œλŠ” κ°œλ°œλ°©μ‹
  • λΆ€ν’ˆμ— ν•΄λ‹Ήν•˜λŠ” 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ 섀계도 (클래슀) κ°€ ν•„μš”ν•˜λ‹€
  • μ™„μ„±ν’ˆ 객체λ₯Ό λͺ¨λΈλ§ν•˜κ³  집합관계에 μžˆλŠ” λΆ€ν’ˆ 객체와 μ‚¬μš©κ΄€κ³„μ— μžˆλŠ” 객체듀을 ν•˜λ‚˜μ”© 섀계후 μ‘°λ¦½ν•˜λŠ” λ°©μ‹μœΌλ‘œ
    ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•œλ‹€

πŸ”Ή 객체 지ν–₯ μ–Έμ–΄

1. μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ΄ λ†’λ‹€.
    - μƒˆλ‘œμš΄ μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œ 기쑴의 μ½”λ“œλ₯Ό μ΄μš©ν•˜μ—¬ μ‰½κ²Œ μž‘μ„±ν•  수 μžˆλ‹€.

2. μ½”λ“œμ˜ 관리가 μš©μ΄ν•˜λ‹€.
    - μ½”λ“œ κ°„μ˜ 관계λ₯Ό μ΄μš©ν•΄μ„œ 적은 λ…Έλ ₯으둜 μ‰½κ²Œ μ½”λ“œλ₯Ό λ³€κ²½ν•  수 μžˆλ‹€.

3. 신뒰성이 높은 ν”„λ‘œκ·Έλž˜λ°μ„ κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€.
    - μ œμ–΄μžμ™€ λ©”μ„œλ“œλ₯Ό μ΄μš©ν•΄μ„œ 데이터λ₯Ό λ³΄ν˜Έν•˜κ³  μ˜¬λ°”λ₯Έ 값을 μœ μ§€ν•˜λ„λ‘ ν•˜λ©°,
      μ½”λ“œμ˜ 쀑볡을 μ œκ±°ν•˜μ—¬ μ½”λ“œμ˜ 뢈일치둜 μΈν•œ μ˜€λ™μž‘μ„ 방지할 수 μžˆλ‹€.


πŸ”Ή ν΄λž˜μŠ€μ™€ 객체

1 ) 클래슀

  • ν΄λž˜μŠ€λŠ” 객체λ₯Ό μ •μ˜ ν•œ 것 , 객체λ₯Ό μ •μ˜ν•œ 섀계도
  •  Javaμ—μ„œ 객체에 λŒ€ν•œ 섀계도가 클래슀(class)λ‹€.
  • ν΄λž˜μŠ€λŠ” 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ ν•„λ“œμ™€ λ©”μ†Œλ“œ, μƒμ„±μžλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.
  • ν΄λž˜μŠ€λ‘œλΆ€ν„° λ§Œλ“€μ–΄μ§„ 객체λ₯Ό ν•΄λ‹Ή 클래슀의 μΈμŠ€ν„΄μŠ€(Instance)라고 ν•œλ‹€.
  • ν΄λž˜μŠ€λ‘œλΆ€ν„° 객체λ₯Ό μƒμ„±ν•˜λŠ” 과정을 클래슀의 μΈμŠ€ν„΄μŠ€ν™”ν•˜κ³  ν•œλ‹€.
  • ν•˜λ‚˜μ˜ 클래슀둜 μ—¬λŸ¬ 객체λ₯Ό 생성할 수 μžˆλ‹€.

2 ) 객체

  • κ°μ²΄λž€ μ‹€μ œλ‘œ μ‘΄μž¬ν•˜λŠ”κ²ƒ  , κΈ°λŠ₯( λ³€μˆ˜ ) κ³Ό 속성 ( λ©”μ„œλ“œ ) 에 따라 λ‹€λ₯΄λ‹€
  • 눈으둜 λ³Ό 수 μžˆλŠ” ν˜•νƒœκ°€ 있으며 (μžλ™μ°¨ , μ±… , μƒν’ˆ  , TV)
  • κ°œλ…μ΄λ‚˜ 논리와 같은 ν˜•νƒœκ°€ μ—†λŠ” 것도 객체둜 κ°„μ£Όν•œλ‹€ (κ³„μ’Œ , μ£Όλ¬Έ )

πŸ“Œ 속성과 κΈ°λŠ₯

  • μžλ™μ°¨
      - 속성 : μ œμ‘°μ‚¬ , λͺ¨λΈλͺ… , 가격 , μ΅œκ³ μ†λ„
      - κΈ°λŠ₯ : 좜발기λŠ₯ , 정지기λŠ₯ , μš΄μ „κΈ°λŠ₯
  • μ£Όλ¬Έ
      - 속성 : 주문번호 , 고객λͺ… , μ£Όλ¬Έλ‚ μ§œ
      - κΈ°λŠ₯ : μ‘°νšŒν•˜κΈ° , μ·¨μ†Œ ν•˜κΈ° , ν™˜λΆˆν•˜κΈ° , λ°˜ν’ˆν•˜κΈ°

3 ) 객체 생성 κ³Ό μ°Έμ‘°ν˜• λ³€μˆ˜

  • new μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ ν΄λž˜μŠ€λ‘œλΆ€ν„° 객체λ₯Ό 생성할 수 μžˆλ‹€
  • 클래슀 이름에 ν•΄λ‹Ήν•˜λŠ” 객체λ₯Ό μƒμ„±ν•˜κ³  , μƒμ„±λœ 객체의 μ£Όμ†Œκ°’μ„ λ°˜ν™˜ν•œλ‹€ 
  • λ°˜ν™˜λœ μ£Όμ†Œ 값은 μƒμ„±λœ 객체λ₯Ό μ΄μš©ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€
  • μ°Έμ‘°λ³€μˆ˜λŠ” μƒμ„±λœ 객체의 μ£Όμ†Œ 값을 μ €μž₯ν•œλ‹€ 
  • μ°Έμ‘°λ³€μˆ˜μ˜ νƒ€μž…μ€ μƒμ„±ν•œ 객체의 클래슀 이름이닀
  • ν΄λž˜μŠ€λŠ” μ‚¬μš©μž μ •μ˜ 데이터 νƒ€μž… ( μžλ£Œν˜• ) 이닀
  • μƒμ„±λœ 객체의 속성과 κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ°˜λ“œμ‹œ ν•΄λ‹Ή 객체λ₯Ό μ°Έμ‘°ν•˜κ³  μžˆλŠ” μ°Έμ‘°λ³€μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€.
 // 객체 μƒμ„±ν•˜κΈ°
  클래슀λͺ… μ°Έμ‘°λ³€μˆ˜;
  μ°Έμ‘°λ³€μˆ˜ = new 클래슀λͺ…();

  // μ°Έμ‘°λ³€μˆ˜ μ„ μ–Έ, 객체 생성
  Car myCar;
  myCar = new Car();

  Book book1;
  book1 = new Book();
  Book book2 = null;
  book2 = new Book();

  // μ°Έμ‘°λ³€μˆ˜ μ„ μ–Έ 및 객체 생성
  클래슀λͺ… μ°Έμ‘°λ³€μˆ˜ = new 클래슀λͺ…();
  
  Car yourCar = new Car();
  Book book3 = new Book();

4 ) 객체 Object 와 μΈμŠ€ν„΄μŠ€ Instance

클래슀 νƒ€μž…μœΌλ‘œ μ„ μ–Έλ˜μ—ˆμ„ λ•ŒλŠ” 객체 , 객체가 λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλ˜μ–΄ μ‹€μ œ μ‚¬μš© 될 λ•ŒλŠ” μΈμŠ€ν„΄μŠ€
객체λ₯Ό '클래슀의 μΈμŠ€ν„΄μŠ€' 라고 ν•œλ‹€


πŸ”Ή μƒμ„±λœ 객체의 속성과 κΈ°λŠ₯ μ‚¬μš©ν•˜κΈ°

  • μ°Έμ‘°λ³€μˆ˜κ°€ μ°Έμ‘°ν•˜λŠ” κ°μ²΄λŠ” κ·Έ 객체의 속성과 κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ‹€.
  • μ°Έμ‘°λ³€μˆ˜κ°€ μ°Έμ‘°ν•˜μ§€ μ•ŠλŠ” κ°μ²΄λŠ” μ‚¬μš©ν•  수 μ—†λ‹€
  • μƒμ„±λœ 객체의 속성과 κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ°˜λ“œμ‹œ μ°Έμ‘°λ³€μˆ˜μ— 객체의 μ£Όμ†Œκ°’μ„ μ €μž₯ν•΄μ•Ό ν•œλ‹€
// 객체 μƒμ„±ν•˜κΈ°
  클래슀λͺ… μ°Έμ‘°λ³€μˆ˜ = new 클래슀λͺ…()
  
  // μƒμ„±λœ 객체의 속성에 κ°’ μ €μž₯ν•˜κΈ°
  μ°Έμ‘°λ³€μˆ˜.속성λͺ… = κ°’;
  // μƒμ„±λœ 객체의 속성에 μ €μž₯된 값을 μ‘°νšŒν•΄μ„œ λ³€μˆ˜μ— μ €μž₯ν•˜κΈ°
  λ°μ΄ν„°νƒ€μž… λ³€μˆ˜ = μ°Έμ‘°λ³€μˆ˜.속성λͺ…
  // μƒμ„±λœ 객체의 속성에 μ €μž₯된 값을 좜λ ₯해보기
  System.out.println(μ°Έμ‘°λ³€μˆ˜.속성λͺ…);

  // μƒμ„±λœ 객체의 κΈ°λŠ₯ μ‚¬μš©ν•˜κΈ°
  μ°Έμ‘°λ³€μˆ˜.κΈ°λŠ₯이름();
  // μƒμ„±λœ 객체의 κΈ°λŠ₯을 μ‹€ν–‰ν•  λ•Œ ν•„μš”ν•œ κ°’ μ „λ‹¬ν•˜κΈ°
  μ°Έμ‘°λ³€μˆ˜.κΈ°λŠ₯이름(κ°’);
  μ°Έμ‘°λ³€μˆ˜.κΈ°λŠ₯이름(κ°’1, κ°’2);
  μ°Έμ‘°λ³€μˆ˜.κΈ°λŠ₯이름(κ°’1, κ°’2, κ°’3);

  // μƒμ„±λœ 객체의 κΈ°λŠ₯을 μ‹€ν–‰ν•˜κ³ , 결과값을 λ°˜ν™˜λ°›κΈ°
  λ°μ΄ν„°νƒ€μž… λ³€μˆ˜λͺ… = μ°Έμ‘°λ³€μˆ˜.κΈ°λŠ₯이름();
  λ°μ΄ν„°νƒ€μž… λ³€μˆ˜λͺ… = μ°Έμ‘°λ³€μˆ˜.κΈ°λŠ₯이름(κ°’1);
  λ°μ΄ν„°νƒ€μž… λ³€μˆ˜λͺ… = μ°Έμ‘°λ³€μˆ˜.κΈ°λŠ₯이름(κ°’1, κ°’2);
  λ°μ΄ν„°νƒ€μž… λ³€μˆ˜λͺ… = μ°Έμ‘°λ³€μˆ˜.κΈ°λŠ₯이름(κ°’1, κ°’2, κ°’3, κ°’4);

 

  // 1. 책정보λ₯Ό ν‘œν˜„ν•˜λŠ” Book 객체 생성
        Book book1 = new Book();

        // 2. book1 이 μ°Έμ‘°ν•˜λŠ” Book 객체의 λ©€λ²„λ³€μˆ˜μ— 책정보 λŒ€μž…ν•˜κΈ°
        book1.title = "μ„Έμ΄λ…Έμ˜ κ°€λ₯΄μΉ¨";
        book1.author = "세이노";
        book1.publisher = "μ„±μ•ˆλ‹Ή";
        book1.price = 180000;
        book1.discountRate = 0.15;
        book1.stock = 20;
        book1.soldOut = false;



        // 3. book1 이 μ°Έμ‘°ν•˜λŠ” Book κ°μ±„μ˜ λ©€λ²„λ³€μˆ˜μ— μ €μž₯된 κ°’ 좜λ ₯ν•˜κΈ°
        System.out.println("제λͺ© : " +book1.title);
        System.out.println("μ €μž : " +book1.author);
        System.out.println("μΆœνŒμ‚¬ : "+book1.publisher);
        System.out.println("가격" + book1.price);
        System.out.println("ν• μΈμœ¨ : "+book1.discountRate);
        System.out.println("재고 : "+book1.stock);
        System.out.println("νŒλ§€μ™„λ£Œ μ—¬λΆ€ : "+book1.soldOut);

        /*
        제λͺ© : μ„Έμ΄λ…Έμ˜ κ°€λ₯΄μΉ¨
        μ €μž : 세이노
        μΆœνŒμ‚¬ : μ„±μ•ˆλ‹Ή
        가격180000
        ν• μΈμœ¨ : 0.15
        재고 : 20
        νŒλ§€μ™„λ£Œ μ—¬λΆ€ : false
         */

πŸ”Ά 클래슀 κ΅¬μ„±μš”μ†Œ - ν•„λ“œ μƒμ„±μž λ©”μ„œλ“œ

πŸ”Ή ν•„λ“œ Field - ν΄λž˜μŠ€μ— μ†ν•˜λŠ” λ³€μˆ˜ ( λ©€λ²„λ³€μˆ˜ )

  • 객체의 고유 데이터 , ν˜„μž¬ μƒνƒœμ •λ³΄ , λΆ€ν’ˆκ°μ²΄λ₯Ό μ €μž₯
  • 객체의 κ³ μœ ν•œ 속성을 λ‚˜νƒ€λ‚Έλ‹€
  • λ³€μˆ˜μ™€ λΉ„μŠ·ν•œ ν˜•νƒœ
  • ν•„λ“œλŠ” μ΄ˆκΈ°ν™” 값을 μ§€μ •ν•˜μ§€ μ•ŠλŠ” 경우 ν•΄λ‹Ή 데이터 νƒ€μž…μ˜ κΈ°λ³Έκ°’μœΌλ‘œ μ΄ˆκΈ°ν™”
  • ν•„λ“œλŠ” μƒμ„±μžμ™€ λ©”μ„œλ“œ μ „μ²΄μ—μ„œ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€
  • 객체가 μ†Œλ©Έλ˜μ§€ μ•ŠλŠ” ν•œ 객체와 ν•¨κ»˜ μœ μ§€ λœλ‹€

class Supercub	{
        String model;
        String color;
        int enginecc;
        int maxSpeed;
    }

πŸ”Ή μƒμ„±μž Constructor

  • 클래슀 이름과 λ™μΌν•œ 이름을 가진 λ©”μ„œλ“œ
  • λ°˜ν™˜ νƒ€μž…μ΄μ—†λ‹€  return , void λ‘˜λ‹€ μ•ˆλœλ‹€.
  • ν΄λž˜μŠ€μ— 1κ°œλŠ” λ°˜λ“œμ‹œ μ‘΄μž¬ν•΄μ•Όν•œλ‹€ , 적어주지 μ•ŠλŠ”λ‹€λ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ μΆ”κ°€ ν•΄μ€€λ‹€ - 'κΈ°λ³Έ μƒμ„±μž
  • new ν‚€μ›Œλ“œμ™€ ν•¨κ»˜ μ‚¬μš©ν•œλ‹€ 
  • 객체λ₯Ό 생성 ν•  λ•Œ μ‹€ν–‰λ˜λŠ” λ©”μ„œλ“œ
  • μ°Έμ‘°λ³€μˆ˜.μƒμ„±μž() ν˜•νƒœλ‘œ μ‚¬μš©ν•  수 μ—†λ‹€
class Supercub {
    String color;
    int maxSpeed;

    // μƒμ„±μž
    Supercub(String c, int m) {
        color = c;
        maxSpeed = m;
    }
    
    // λ§€κ°œλ³€μˆ˜ String cλŠ” μƒμ„±μžκ°€ 호좜될 λ–„ 전달받은 색상 κ°’
    // this.colorλŠ” 클래슀 Supercub에 color을 λœ»ν•¨
    
}


  // 객체 생성과 λ™μ‹œμ— μƒμ„±μž 호좜
        Supercub mySupercub = new Supercub("red", 100);
// 객체 생성
Book b = new Book();
// Book()  μ—¬κΈ° 뢀뢄이 μƒμ„±μž λ©”μ„œλ“œ

public class Book {
	
    
    // κΈ°λ³Έ μƒμ„±μž
    Book() { } 
    
    // 멀버 λ©”μ„œλ“œ
    public void printBook(){
    System.out.("제λͺ© : "+title);
    }
    
	}

πŸ”Ή λ©”μ„œλ“œ Method

  • 이름을 가진 μˆ˜ν–‰λ¬Έμ˜ λΈ”λŸ­
  • 객체의 κ³ μœ ν•œ κΈ°λŠ₯을 λ‹΄λ‹Ή
  • 이름을 가지고 있으며 이것듀 λ©”μ„œλ“œ 이름이닀
  • λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄ λΈ”λŸ­λ‚΄μ˜ λͺ¨λ“  μˆ˜ν–‰λ¬Έμ΄ μˆ˜ν–‰λœλ‹€
  • λ©”μ„œλ“œλŠ” ν•„λ“œμ˜ 값을 μ‘°νšŒν•˜κ³  μˆ˜μ •ν• μˆ˜ μžˆλ‹€
  • ν˜ΈμΆœν•˜λŠ” μΈ‘μœΌλ‘œλΆ€ν„° 데이터λ₯Ό 전달받을 수 있고 μ‹€ν–‰ ν›„ 결과값을 ν˜ΈμΆœν•˜λŠ” 츑에 μ œκ³΅ν•  수 μžˆλ‹€
  • λ©”μ„œλ“œμ˜ ꡬ성은 선언뢀와 κ΅¬ν˜„λΆ€λ‘œ κ΅¬μ„±λ˜μ–΄μžˆλ‹€

class Supercub {
    String color;
    int maxSpeed;
    int currentSpeed;

    // μƒμ„±μž
    Supercub(String color, int maxSpeed) {
        this.color = color;
        this.maxSpeed = maxSpeed;
        this.currentSpeed = 0; // 초기 속도λ₯Ό 0으둜 μ„€μ •
    }

    // κ°€μ†ν•˜κΈ° λ©”μ„œλ“œ
    void accelerate(int amount) {
        currentSpeed += amount;
        if(currentSpeed > maxSpeed) {
            currentSpeed = maxSpeed;
        }
    }

    // κ°μ†ν•˜κΈ° λ©”μ„œλ“œ
    void decelerate(int amount) {
        currentSpeed -= amount;
        if(currentSpeed < 0) {
            currentSpeed = 0;
        }
    }

    // 엔진 켜기 λ©”μ„œλ“œ
    void startEngine() {
        System.out.println("엔진이 μΌœμ‘ŒμŠ΅λ‹ˆλ‹€.");
    }
}

 

πŸ“Œ λ°˜ν™˜ νƒ€μž…

  • λ°˜ν™˜νƒ€μž… : λ§€μ„œλ“œλ₯Ό ν˜ΈμΆœν•œ μΈ‘μ—μ„œ μ œκ³΅λ°›λŠ” λ°˜ν™˜κ°’μ˜ νƒ€μž… 
  • λ°˜ν™˜κ°’μ΄ μ—†λŠ”κ²½μš° void둜 지정
  • λ°˜ν™˜κ°’μ΄ μžˆλŠ” 경우 λ°˜ν™˜κ°’μ˜ νƒ€μž…μ„ 지정
  • λ°˜ν™˜νƒ€μž…μ€ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” μΈ‘μ—κ²Œ 이 λ©”μ„œλ“œ μ‹€ν˜•κ²°κ³Όλ‘œ νšλ“λ˜λŠ” κ°’μ˜ νƒ€μž…μ„ μ•Œλ €μ€Œ
  • λ°˜ν™˜ 값을 μ €μž₯ν•  λ³€μˆ˜μ˜ νƒ€μž…μ„ κ²°μ •ν• μˆ˜ 있게 κ²°μ •ν•œλ‹€

 

πŸ“Œ λ©”μ„œλ“œ 이름 : λ©”μ„œλ“œκ°€ μˆ˜ν–‰ν•˜λŠ” κΈ°λŠ₯을 ν‘œν˜„ν•˜λŠ” μ μ ˆν•œ μ΄λ¦„μœΌλ‘œ 지정
      μ‹λ³„μž μž‘μ„± κ·œμΉ™μ„ λ”°λ₯Έλ‹€

// 1. μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμž 숫자 _ & 만 μ‚¬μš©
// 2. 숫자둜 μ‹œμž‘ λΆˆκ°€λŠ₯
// 3. μžλ°” μ˜ˆμ•½μ–΄ κΈˆμ§€
// 4. 곡백문자 κΈˆμ§€
// 5. μ˜λ―ΈμžˆλŠ” 이름
// 6. μΌ€μ΄μŠ€ κ·œμΉ™ 
//  - ν΄λž˜μŠ€λŠ” λŒ€λ¬Έμžλ‘œ μ‹œμž‘ MyClass
//  - λ©”μ„œλ“œμ™€ λ³€μˆ˜ 이름은 μ†Œλ¬Έμžλ‘œ μ‹œμž‘ myHonda , calculateSum

 

πŸ“Œ λ§€κ°œλ³€μˆ˜ 

λ©”μ„œλ“œλ₯Ό 호좜 ν•˜λŠ” 츑이 인자둜 μ „λ‹¬ν•˜λŠ” 값을 μ €μž₯ν•˜λŠ” λ³€μˆ˜
λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…κ³Ό 이름을 톡해 인자둜 전달할 κ°’κ³Ό κ°’μ˜ νƒ€μž…μ„ μœ μΆ” ν•  수 있게 ν•œλ‹€

 

πŸ“Œ return 

λ©”μ„œλ“œμ˜ μ΅œμ’… λ°˜ν™˜ 값을 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•œ μͺ½μ— λ°˜ν™˜ν•œλ‹€
λ°˜ν™˜ νƒ€μž…μ΄ voidλ©΄ return μ‚¬μš© X
μž…λ ₯ν•˜μ§€ μ•Šκ±°λ‚˜ μžλ£Œν˜•μ΄ λ‹€λ₯΄κ±°λ‚˜ μˆœμ„œκ°€ 틀리면 였λ₯˜ λ°œμƒ

 

 

public class Sample {

// μƒμ„±μž λ©”μ„œλ“œ
public Sample() {}

// 멀버 λ©”μ„œλ“œ , μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ 
public void smething(){}

	}

// μƒμ„±μž μ‚¬μš© 
Sample sample = new Sample();

// 멀버 λ©”μ„œλ“œ μ‚¬μš©
sample.something();

 

 λ©€λ²„ λ©”μ„œλ“œ
• 객체 생성 이후 μ‚¬μš© κ°€λŠ₯
 κ°μ²΄ 생성 이후 κ°μ²΄μ˜ μ°Έμ‘°λ³€μˆ˜λ₯Ό μ΄μš©ν•΄ μ°Έμ‘°λ³€μˆ˜.λ©”μ„œλ“œ() μ˜ ν˜•νƒœλ‘œ μ‚¬μš©

 

πŸ“Œ  κΈ°λ³Έ μƒμ„±μžκ°€ μ—†μ–΄μ„œ λ°œμƒ

 

 

 


πŸ”Ή this ( )

  • 자기 μžμ‹ μ˜ μ£Όμ†Œκ°’μ„ 가지고 μžˆλŠ” λ©”μ„œλ“œ 
  • μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œμ—μ„œ μ‚¬μš©, static λ©”μ„œλ“œμ—μ„œλŠ” μ‚¬μš©μ΄ λΆˆκ°€
this()
  • 같은 클래슀 λ‚΄μ—μ„œ μƒμ„±μžκ°€ λ‹€λ₯Έ μƒμ„±μžλ₯Ό μ‹€ν–‰ ν•  λ•Œ μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œ
  • μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” λ™μ‹œμ— μ›ν•˜λŠ” κ°’μœΌλ‘œ μ΄ˆκΈ°ν™” ν• μˆ˜ 있게됨
public Product(int no, String name, String maker, int price, int stock) {
    this(no, name, maker, price, stock, false); // λ‹€λ₯Έ μƒμ„±μž 호좜
}

 

 

πŸ”Ή μ˜€λ²„λ‘œλ”©

  • λ§€κ°œλ³€μˆ˜μ˜ κ°―μˆ˜κ°€ λ‹¬λΌμ•Όν•œλ‹€
  • λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ΄ λ‹¬λΌμ•Όν•œλ‹€
  • λ©”μ„œλ“œ 이름이 κ°™μ•„μ•Όν•œλ‹€ 
	/**
	 * μ •μˆ˜ 2개λ₯Ό 전달받아 λ§μ…ˆμ„ μˆ˜ν–‰ν•˜κ³  , κ·Έ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•œλ‹€
	 * @param x 첫번쨰 μ •μˆ˜
	 * @param y λ‘λ²ˆμ§Έ μ •μˆ˜
	 * @return λ§μ…ˆκ²°κ³Ό κ°’
	 */
	int sum(int x ,int y) {
		System.out.println("(μ •μˆ˜ + μ •μˆ˜) 의 λ§μ…ˆμ„ μ‹€ν–‰ν•œλ‹€");
		
		int result = x + y;
		
		return result;
	}
	
	/**
	 * μ •μˆ˜ 3개λ₯Ό μ „λ‹¬λ°›μ•„μ„œ λ§μ…ˆμ„ μˆ˜ν–‰ν•˜κ³  κ·Έ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•œλ‹€
	 * @param x 첫번째 μ •μˆ˜
	 * @param y λ‘λ²ˆμ§Έ μ •μˆ˜
	 * @param z μ„Έλ²ˆμ§Έ μ •μˆ˜
	 * @return λ§μ…ˆ κ²°κ³Όκ°’
	 * λ©”μ„œλ“œμ˜ μ€‘λ³΅μ •μ˜ 
	 */
	int sum (int x, int y , int z) {
		System.out.println("(μ •μˆ˜ + μ •μˆ˜ + μ •μˆ˜) 의 λ§μ…ˆμ„ μ‹€ν–‰ν•œλ‹€");
		int result = x + y + z;
		
		return result;
	}
	
	
	double sum (double x , double y) {
		System.out.println("(μ‹€μˆ˜ + μ‹€μˆ˜)의 λ§μ…ˆμ„ μ‹€ν–‰ν•œλ‹€ ");
		double result = x + y;
		
		return result;
	}

	double sum( double x , int y) {
		System.out.println("(μ‹€μˆ˜ + μ •μˆ˜)의 λ§μ…ˆμ„ μ‹€ν–‰ν•œλ‹€");
		double result = x + y;
		
		return result;
	}
	
	
	double sum(int x , double y) {
		System.out.println("(μ •μˆ˜ + μ‹€μˆ˜)의 λ§μ…ˆμ„ μ‹€ν–‰ν•œλ‹€");
		double result = x + y;
		
		return result;
	}
	
	// μ•ˆλ˜λŠ” 경우
    
// λ§€κ°œλ³€μˆ˜μ˜ 이름이 μ„œλ‘œ λ‹€λ₯Έ 것은 λ©”μ†Œλ“œ μ€‘λ³΅μ •μ˜μ˜ μš”κ±΄μ΄ 될수 μ—†λ‹€.,
//	double sum (int a , double z) {
//		System.out.println("λ§€κ°œλ³€μˆ˜μ˜ μ΄λ¦„λ§Œ λ‹€λ₯΄κΈ°μ— μ•ˆλœλ‹€");
//		double result = a + z;
//		
//		return result;
//	}

 

πŸ“Œ λ©”μ„œλ“œ μ€‘λ³΅μ •μ˜

ν•˜λ‚˜μ˜ 클래슀 μ•ˆμ— 이름이 λ™μΌν•œ λ©”μ„œλ“œλ₯Ό μ—¬λŸ¬κ°œ μ •μ˜ν•˜λŠ” 것

  • μœ μ‚¬ν•œ κΈ°λŠ₯은 λ™μΌν•œ μ΄λ¦„μœΌλ‘œ μΌκ΄€λ˜κ²Œ μ •μ˜
  • 객체의 κΈ°λŠ₯에 λŒ€ν•œ μ‚¬μš©μ„±μ΄ 높아진닀

 

βœ” λ§€κ°œλ³€μˆ˜μ˜ 갯수 / νƒ€μž…μ„ λ‹€λ₯Έ λ©”μ„œλ“œ ( 이름이 같은) 와 μ„œλ‘œ λ‹€λ₯΄κ²Œ μ •μ˜ ν•΄μ•Ό ν•œλ‹€.

 

 

// 아이디와 λΉ„λ°€λ²ˆν˜Έλ₯Ό 전달 λ°›μ•„ 둜그인 성곡 μ—¬λΆ€λ₯Ό λ°˜ν™˜ ν•˜λŠ” λ©”μ„œλ“œ
// λ°˜ν™˜νƒ€μž… : boolean , 성곡 μ—¬λΆ€
// λ§€κ°œλ³€μˆ˜ : 아이디 , λΉ„λ°€λ²ˆν˜Έ
boolean login(String id, String pw) { 
....
}


// 아이디 λΉ„λ°€λ²ˆν˜Έ 이메일 μ΄λ¦„λ“±μ˜ 고객정보λ₯Ό 전달받아 λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•˜λŠ” λ©”μ„œλ“œ
// λ°˜ν™˜νƒ€μž… : μ—†μŒ
// λ§€κ°œλ³€μˆ˜ : 아이디 λΉ„λ°€λ²ˆν˜Έ 이메일 이름
void saveUser(String id , String pw , String email , String name) {
	....
    }
    
// 고객정보λ₯Ό 전달받아 λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•˜λŠ” λ©”μ„œλ“œ
// λ°˜ν™˜νƒ€μž… : μ—†μŒ
// λ§€κ°œλ³€μˆ˜ : 고객정보
void saveCustomer( Customer customer ) {  // Customer 객체λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ
	....
    }
    
// 고객의 아이디λ₯Ό 전달받아 ν•΄λ‹Ή 고객의 정보λ₯Ό λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œ
// λ°˜ν™˜νƒ€μž… : Customer , 고객정보 
// λ§€κ°œλ³€μˆ˜ : 고객 아이디
Customer getCustomerById(String id) {
	....
    }

 

μ‹€μŠ΅

β—» κ°μ²΄ 생성 

		// Book  클래슀둜 Book 객체 μƒμ„±ν•˜κΈ° 
		Book bk1 = new Book();
		Book bk2 = new Book();
		Book bk3 = new Book();
		
		// Book μ„€κ³„λ„λ‘œ μƒμ„±ν•œ 객체의 μ£Όμ†Œκ°’μ„ μ €μž₯ν•˜λŠ” μ°Έμ‘°λ³€μˆ˜ bk
		// new Book(); new ν‚€μ›Œλ“œλ‘œ Book 객체λ₯Ό 생성 μƒμ„±λœ 객체의 μ£Όμ†Œκ°’μ„ λ°˜ν™˜ν•œλ‹€ 
		
		System.out.println(bk1); //	day1.Book@3d012ddd
		System.out.println(bk2); //	day1.Book@626b2d4a
		System.out.println(bk3); //	day1.Book@5e91993f

 

β—» 객체 닀루기

public class Book {
	
        // ν•„λ“œ  : 클래슀 내에 μ„ μ–Έλœ λ³€μˆ˜
        // λ©€λ²„λ³€μˆ˜ : ν΄λž˜μŠ€μ— μ†ν•œ λ³€μˆ˜ ν•„λ“œλž‘ κ°™μ€μ˜λ―Έ
        // ν”„λ‘œνΌν‹° : 객체의 속성을 λ‚˜νƒ€λƒ„
        //  title, author, publisher, price, discountRate, stock, soldOut은 λͺ¨λ‘ ν•„λ“œμ΄λ©°, λ™μ‹œμ— 멀버 λ³€μˆ˜
        // 각각의 ν•„λ“œλŠ” Book 객체의 ν”„λ‘œνΌν‹°
		
		String title;
		String author;
		String publisher;
		int price;
		double discountRate;
		int stock;
		boolean soldOut;
	
}
		Book book1 = new Book();		
		Book book2 = new Book();		
		Book book3 = new Book();		
		
		
		book1.title = "이것이 μžλ°”λ‹€";
		book1.author = "μ‹ μš©κΆŒ";
		book1.publisher = "ν•œλΉ› λ―Έλ””μ–΄";
		book1.discountRate = 0.15;
		book1.price = 36000;
		book1.stock = 100;
		book1.soldOut = false;
		
		book2.title = "μžλ°”μ˜ 정석";
		book2.author = "남ꢁ성";
		book2.publisher = "λ„μš° μΆœνŒμ‚¬";
		book2.discountRate = 0.15;
		book2.price = 32000;
		book2.stock = 50;
		book2.soldOut = false;
		
		
		book3.title = "헀더 퍼슀트 μžλ°”";
		book3.author = "μΌ€μ΄μ‹œ μ‹œμ—λΌ";
		book3.publisher = "ν•œλΉ› λ―Έλ””μ–΄";
		book3.discountRate = 0.15;
		book3.price = 28000;
		book3.stock = 100;
		book3.soldOut = true;
		
		
		// Book 객체λ₯Ό μ—¬λŸ¬ 개 μ €μž₯ν•˜λŠ” 배열을 μƒμ„±ν•˜κ³  , κ·Έ 배열에 Book 객체 λ‹΄κΈ°
		Book [] books = new Book[3];
		books[0] = book1;
		books[1] = book2;
		books[2] = book3;
		
		
		Scanner scanner = new Scanner(System.in);
		while(true) {
			System.out.println("---------------------------------------------------------");
			System.out.println("1. μž¬κ³ ν˜„ν™©  2. νŒλ§€κ°€λŠ₯λ„μ„œ  3.  νŒλ§€μ™„λ£Œλ„μ„œ  0. μ’…λ£Œ");
			System.out.println("---------------------------------------------------------");
			
			System.out.println("### 메뉴선택 ###");
			int menu = scanner.nextInt();
			
			if(menu == 1) {
				System.out.println("### λ„μ„œ ν˜„ν™©μ„ 좜λ ₯ν•©λ‹ˆλ‹€");
				
				for (Book book : books) {
					System.out.println(book.title + "\t" + book.price);
				}
			} else if(menu == 2) {
				System.out.println("### νŒλ§€μ€‘μΈ μ±… 정보λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€");
				
				for (Book book : books) {
					if(book.soldOut == false) {
						
						System.out.println(book.title + "\t" + book.price);
					}
				}
			} else if (menu == 3) {
				System.out.println("### νŒλ§€μ™„λ£Œλœ 책정보λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€");
				
				for (Book book : books) {
					if (book.soldOut == true) {
						System.out.println(book.title + "\t" + book.price);
					}
				}
			} else if (menu == 0 ) {
				System.out.println("### ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œ ν•©λ‹ˆλ‹€");
				break;
			}
		
		}
	
		scanner.close();
public class Product {

	// μ œν’ˆ 클래슀
	
	// λ©€λ²„λ³€μˆ˜
    int no;          // μ œν’ˆλ²ˆν˜Έ
    String name;     // μ œν’ˆμ΄λ¦„
    String maker;    // μ œμ‘°μ‚¬
    int price;       // μ œν’ˆ 가격
    int stock;       // 재고 
    boolean soldOut; // ν’ˆμ ˆ 유무

Product(){}	// κΈ°λ³Έμƒμ„±μž
    
     // μƒμ„±μž
	// Source - Generate Constructor
	// λ§€κ°œλ³€μˆ˜λ‘œ 번호 , 이름 , μ œμ‘°μ‚¬ , 가격 , μˆ˜λŸ‰ λ°›μ•„μ„œ λ§Œλ“œλ €κ³ 
	public Product(int no, String name, String maker, int price, int stock) {
		this.no = no;
		this.name = name;
		this.maker = maker;
		this.price = price;
		this.stock = stock;
		this.soldOut = false;
	}
    
    public Product(int no , String name , String maker , int price ) {
	// no , name , maker , price둜 만 객체 생성
	// stock , soldOut은 기본값을 쀬음
	// 객체 μƒμ„±μ‹œ
	// ProductEx pex = new ProductEx(17 , "λͺ¨λ‹ˆν„°" , "μ‚Όμ„±" , 10);
		this.no = no;
		this.name = name;
		this.maker = maker;
		this.price = price;
		this.stock = 10;
		this.soldOut = false;
	}
    
    // λ§ˆμ°¬κ°€μ§€λ‘œ μ œν’ˆμ˜ 번호 , 이름 , 가격 만 μ£Όκ³  
	// κΈ°λ³Έ κ°’μœΌλ‘œ μ œμ‘°μ‚¬μ™€ μž¬κ³ μˆ˜λŸ‰ ν’ˆμ ˆμœ λ¬΄λ₯Ό 직접 μ£Όκ³ μžˆλ‹€
	public Product (int no , String name  ,int price) {
		this.no = no;
		this.name =  name;
		this.price =  price;
		this.maker = "μ‚Όμ„±";
		this.stock = 10;
		this.soldOut = false;
	}
    
    	// 좜λ ₯λ©”μ„œλ“œ
	void printProduct() {
		System.out.println();
		System.out.println("μƒν’ˆ 번호 : "+ no);
		System.out.println("μƒν’ˆ 이름 : "+ name);
		System.out.println("μ œμ‘°μ‚¬ : "+ maker);
		System.out.println("가격 : "+ price);
		System.out.println("재고 μˆ˜λŸ‰ : "+ stock);
		System.out.println("재고 μ—¬λΆ€ : "+ soldOut);
		System.out.println();
	}
728x90