728x90
λ°˜μ‘ν˜•

1. 객체지ν–₯ ?

- κ°œλ… : μ†Œν”„νŠΈμ›¨μ–΄ κ°μ²΄λŠ” ν˜„μ‹€ μ„Έκ³„μ˜ 객체λ₯Ό ν•„λ“œμ™€ λ©”μ„œλ“œλ‘œ λͺ¨λΈλ§ν•œ 것

μ†Œν”„νŠΈμ›¨μ–΄ κ°μ²΄λŠ” ν•„λ“œ(Field)둜 μ •μ˜ν•˜κ³ , λ™μž‘μ€ λ©”μ„œλ“œ(Method)둜 μ •μ˜

ν•„λ“œλŠ” 객체 내뢄에 μ„ μ–Έλœ λ³€μˆ˜λ₯Ό μ˜λ―Έν•˜κ³ , λ©”μ„œλ“œλŠ” 객체 내뢀에 μ •μ˜λœ λ™μž‘

 

- ν”„λ‘œκ·Έλž˜λ° : μ†Œν”„νŠΈμ›¨μ–΄μ˜ 규λͺ¨κ°€ μ»€μ§€λ©΄μ„œ λ™μž‘κ³Ό λΆ„λ¦¬λ˜μ–΄ μ „ κ³Όμ •μ—μ„œ μ„œλ‘œ λ³΅μž‘ν•˜κ²Œ μ–½ν˜€ μžˆλŠ” 데이터λ₯Ό μ‚¬μš©ν–ˆκΈ° λ•Œλ¬Έμ— 절파 지ν–₯ ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μ˜ ν•œκ³„λ‘œ 생성

절차 지ν–₯ ν”„λ‘œκ·Έλž¨μ€ μΆ”ν›„ λ³€κ²½ν•˜κ±°λ‚˜ ν™•μž₯ν•˜κΈ°λ„ 어렀움

ν˜„μ‹€μ„Έκ³„λ₯Ό 객체 λ‹¨μœ„λ‘œ ν”„λ‘œκ·Έλž˜λ°ν•˜λ©°, κ°μ²΄λŠ” ν•„λ“œμ™€ λ©”μ„œλ“œλ₯΄ ν•˜λ‚˜λ‘œ λ¬Άμ–΄ ν‘œν˜„

 

- νŠΉμ§•(μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬ λ¬Έμ œλ‘œλ„ 자주 좜제됨!!)

1. μΊ‘μŠν™”(정보은닉) : κ΄€λ ¨λœ ν•„λ“œμ™€ λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜μ˜ 캑슐처럼 포μž₯ν•΄ μ„ΈλΆ€ λ‚΄μš©μ„ μ™ΈλΆ€μ—μ„œ μ•Œ 수 없도둝 κ°μΆ”λŠ” 것

2. 상속 : μžλ…€κ°€ λΆ€λͺ¨ μž¬μ‚°μ„ 상속받아 μ‚¬μš©ν•˜λ“―μ΄ μƒμœ„ 객체λ₯Ό 상속받은 ν•˜μœ„ 객체가 μƒμœ„ 객체의 λ©”μ„œλ“œμ™€ ν•„λ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것

3. λ‹€ν˜•μ„± : λŒ€μž…λ˜λŠ” 객체에 λ”°λΌμ„œ λ©”μ„œλ“œλ₯Ό λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λ„λ‘ κ΅¬ν˜„ν•˜λŠ” 기술, μ‹€ν–‰ 도쀑 λ™μΌν•œ μ΄λ¦„μ˜ λ‹€μ–‘ν•œ κ΅¬ν˜„μ²΄ μ€‘μ—μ„œ λ©”μ„œλ“œλ₯Ό 선택 κ°€λŠ₯(λ‹€μ–‘μ„±κ³ΌλŠ” 닀름)

4. 좔상화 : ν˜„μ‹€ μ„Έκ³„μ˜ κ°μ²΄μ—μ„œ λΆˆν•„μš”ν•œ 속성을 μ œκ±°ν•˜κ³  μ€‘μš”ν•œ μ •λ³΄λ§Œ 클래슀둜 ν‘œν˜„ν•˜λŠ” μΌμ’…μ˜ λͺ¨λΈλ§ 기법

 

더보기

- 클래슀 μ„ μ–Έ

class 클래슀 이름 {       => 클래슀λ₯Ό μ„ μ–Έν•˜κΈ° μœ„ν•œ ν‚€μ›Œλ“œ

  // ν•„λ“œ                         => 객체의 속성을 λ‚˜νƒ€λ‚Έλ‹€

  // λ©”μ„œλ“œ                     => 객체의 λ™μž‘μ„ λ‚˜νƒ€λ‚Έλ‹€

 

ex)

public class Ball {

   double radius = 2.0;

   double getVolume() {

      return 4 / 3 * 3.14 * radius * radius * radius;

    }

}

 

public : 클래슀 μ ‘κ·Ό κΆŒν•œμœΌλ‘œ λˆ„κ΅¬λ‚˜ μ‚¬μš©ν•  수 μžˆλ‹€

class : 클래슀 ν‚€μ›Œλ“œ

Ball : 클래슀 μ΄λ¦„μœΌλ‘œ μ†ŒμŠ€ 파일 이름과 동일해야 ν•œλ‹€

double radius = 2.0;  : ν•„λ“œ

return 4 / 3 * 3.14 *radius * radius * radius;  =>  λ©”μ„œλ“œ : () κ°€ λ“€μ–΄κ°€λ©΄ λ©”μ„œλ“œλΌκ³  μƒκ°ν•˜κΈ°

- 객체 생성과 μ°Έμ‘° λ³€μˆ˜

- ν•œ λ¬Έμž₯으둜 λ³€μˆ˜ μ„ μ–Έκ³Ό 객체 생성

 ν΄λž˜μŠ€ 이름 λ³€μˆ˜ = new 클래슀 이름();

  • μƒμ„±μž 이름은 클래슀 이름과 κ°™λ‹€
  • μƒμ„±μžμ˜ λ°˜ν™˜ νƒ€μž…μ€ μ—†λ‹€
  • μƒμ„±μžλŠ” new μ—°μ‚°μžμ™€ ν•¨κ»˜ μ‚¬μš©ν•˜λ©°, 객체λ₯Ό 생성할 λ•Œ ν˜ΈμΆœν•œλ‹€
  • μƒμ„±μžλŠ” μ˜€λ²„λ‘œλ”© ν•  수 μžˆλ‹€.(μ˜€λ²„λ‘œλ”©(Overloading) : 같은 μ΄λ¦„μ˜ λ©”μ„œλ“œ μ—¬λŸ¬κ°œλ₯Ό κ°€μ§€λ©΄μ„œ λ§€κ°œλ³€μˆ˜μ˜ μœ ν˜•κ³Ό κ°œμˆ˜κ°€ λ‹€λ₯΄λ„둝 ν•˜λŠ” 기술)

 

- 클래슀 μ„ μ–Έκ³Ό 객체 생성 μ˜ˆμ‹œ 문제 (기초 νƒ€μž…κ³Ό μ°Έμ‘°νƒ€μž…)

package java0316;

public class PhoneDemo {

    public static void main(String[] args) {

       Phone myPhone = new Phone();

       myPhone.model = "κ°€λŸ­μ‹œ S8";

       myPhone.value = 100;

       myPhone.print();

       Phone yourPhone = new Phone();

       yourPhone.model = "G6";

        yourPhone.value = 85;

        yourPhone.print();

     }

}

class Phone {

     String model;

     int value;

     void print() {

            System.out.println(value + "λ§Œμ› 짜리" + model + "슀마트폰");

     }

}

κ²°κ³ΌλŠ” μ΄λ ‡μŠ΅λ‹ˆλ‹€!!

100λ§Œμ› μ§œλ¦¬κ°€λŸ­μ‹œ S8슀마트폰

85λ§Œμ› 짜리G6슀마트폰

- ν•„λ“œμ™€ 지역 λ³€μˆ˜μ˜ 차이 : ν•„λ“œλŠ” κΈ°λ³Έ 값이 μžˆμ§€λ§Œ, 지역 λ³€μˆ˜λŠ” κΈ°λ³Έ 값이 μ—†μ–΄ λ°˜λ“œμ‹œ μ΄ˆκΈ°ν™”(기본값이 0)

ν•„λ“œλŠ” 클래슀 μ „μ²΄μ—μ„œ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, 지역 λ³€μˆ˜λŠ” μ„ μ–Έλœ 블둝 λ‚΄λΆ€μ˜ μ„ μ–Έλœ ν›„μ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯

ν•„λ“œμ™€ 달리 지역 λ³€μˆ˜λŠ” final둜만 지정 κ°€λŠ₯ (λ°°μ—΄μ—μ„œλ§Œ null값을 가짐)

 

- μ ‘κ·Όμžμ™€ μ„€μ •μž

ν•„μš”μ„± : 클래슀 내뢀에 μΊ‘μŠν™”λœ 멀버λ₯Ό μ™ΈλΆ€μ—μ„œ μ‚¬μš©ν•  ν•„μš”

μ ‘κ·Όμžμ™€ μ„€μ •μž

private으둜 μ§€μ •λœ ν•„λ“œμ— 값을 λ°˜ν™˜ν•˜λŠ” μ ‘κ·Όμžμ™€ 값을 λ³€κ²½ν•˜λŠ” μ„€μ •μžλŠ” 곡개된 λ©”μ„œλ“œ

일반적으둜 μ ‘κ·ΌμžλŠ” get, μ„€μ •μžλŠ” set으둜 μ‹œμž‘ν•˜λŠ” 이름을 μ‚¬μš©

ν•„λ“œ 이름을 외뢀와 μ°¨λ‹¨ν•΄μ„œ λ…λ¦½μ‹œν‚€κΈ° λ•Œλ¬Έμ— ν•„λ“œ 이름 λ³€κ²½μ΄λ‚˜ 데이터 검증도 κ°€λŠ₯

package java0316;

public class CircleDemo2 {

        public static void main(String[] args) {

                Circle1 myCircle = new Circle1();

                myCircle.setRadius(10.0);

                myCircle.show(myCircle.getRadius(), myCircle.findArea());

         }

}

class Circle1 {

        private double radius;

        public double getRadius() {

               return radius;

        }

        public void setRadius(double r) {

               this.radius = r;

         }

         double findArea() {

              return 3.14 * radius * radius;

         }

         void show(double x, double y) {

               System.out.printf("λ°˜μ§€λ¦„ = %.1f, 넓이 = %.1f\n", x, y);

         }

}

κ²°κ³ΌλŠ” ) λ°˜μ§€λ¦„ = 10.0, 넓이 = 314.0

- λ””ν΄νŠΈ μƒμ„±μž

  • λͺ¨λ“  ν΄λž˜μŠ€λŠ” μ΅œμ†Œν•œ ν•˜λ‚˜μ˜ μƒμ„±μžκ°€ 있음
  • λ§Œμ•½ μƒμ„±μžλ₯Ό μ„ μ–Έν•˜μ§€ μ•ŠμœΌλ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ λ””ν΄νŠΈ μƒμ„±μžλ₯Ό μΆ”κ°€

 

728x90
λ°˜μ‘ν˜•
728x90
λ°˜μ‘ν˜•

ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λž€ :  컴퓨터와 인간 사이λ₯Ό μ—°κ²°ν•  수 μžˆλŠ” 맀개체이며 컴퓨터에 μž‘μ—…μ„ μ‹œν‚€κΈ° μœ„ν•œ 도ꡬ

- 기계어인 μ €κΈ‰ μ–Έμ–΄λΆ€ν„° μžμ—°μ–΄μ— κ°€κΉŒμš΄ κ³ κΈ‰ μ–Έμ–΄κΉŒμ§€ λ‹€μ–‘

- 보톡 ν”„λ‘œκ·Έλž˜λ° 언어라고 ν•˜λ©΄ κ³ κΈ‰ μ–Έμ–΄λ₯Ό μ˜λ―Έν•˜λŠ”λ° C, C++, Java ...

- κ³ κΈ‰ μ–Έμ–΄λ‘œ μž‘μ„±ν•œ μ†ŒμŠ€ μ½”λ“œλŠ” μ»΄νŒŒμΌλŸ¬λΌλŠ” μ‹œμŠ€ν…œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ΄μš©ν•΄ λ¨Όμ € κΈ°κ³„μ–΄λ‘œ κ΅¬μ„±λœ μ‹€ν–‰ μ½”λ“œλ‘œ λ³€ν™˜

 

1. java의 νŠΉμ§•

- λ‹¨μˆœν•˜λ‹€

- 객체 지ν–₯ 언어이닀

- ν•¨μˆ˜ν˜• 코딩을 μ§€μ›ν•œλ‹€

- 츨랫폼 독립적이닀

- λΆ„μ‚° 처리λ₯Ό μ§€μ›ν•œλ‹€

- μ•ˆμ „ν•˜λ‹€

- 이식성이 μ’‹λ‹€

 

2. ν™œμš© λΆ„μ•Ό

- μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λ¬Όλ‘  CRM, ERP, SCM λ“± κΈ°μ—…μš© μ• ν”Œλ¦¬μΌ€μ΄μ…˜

- 빅데이터, ν΄λΌμš°λ“œ, μ†Œμ…œ, λͺ¨λ°”일, 사물인터넷 λ“± ν˜μ‹  κΈ°μˆ μ—μ„œ 컀λ„₯ν‹°λ“œ μΉ΄, 슀마트폰 및 λΉ„λ””μ˜€  κ²Œμž„κΉŒμ§€ μΌμƒμƒν™œκ³Ό 업무 ν™˜κ²½ μ „λ°˜μ— λ°€μ ‘ν•˜κ²Œ μ—°κ΄€

- 심지어 μ „ 세계 ν•΄μ–‘ 정보 μˆ˜μ§‘, 인간 λ‘λ‡Œμ™€ 근골격계 연ꡬ 등에도 λ‹€μ–‘ν•˜κ²Œ ν™œμš©

 

3. java μ‹œμž‘ν•˜κΈ° (μžλ°”, 이클립슀 μ„€μΉ˜, ν”„λ‘œμ νŠΈ 생성, 클래슀 생성 순)

μžλ°” μ„€μΉ˜ -> 이클립슀 μ„€μΉ˜ -> [File] -> [New] -> [Java Project] -> ν”„λ‘œμ νŠΈ 이름 μž‘μ„± -> μƒˆλ‘œ μž‘μ„±λœ ν”„λ‘œμ νŠΈ μ˜€λ‘ μ† 마우슀 클릭후 [New] -> [Class] μ„ νƒν•˜λ©΄ μ½”λ”© μ€€λΉ„ 끝 !!

 

4. μ €μž₯ν•˜κΈ°

 μ €μž₯은 [ctrl] + s ν•˜κ±°λ‚˜ λ””μŠ€ν¬ μ•„μ΄μ½˜ λˆ„λ₯΄κΈ°~~

 

5. μ‹€ν–‰ν•˜κΈ°

싀행은 [ctrl] + [F11]

싀행은 단좕기 λ³΄λ‹€λŠ” Refactor 밑에 μžˆλŠ” ν™”μ‚΄ν‘œ λˆ„λ₯΄λŠ”κ²Œ λΉ λ₯΄λ‹€!!!

 

 

728x90
λ°˜μ‘ν˜•

+ Recent posts