'객체지향 프로그래밍'에 해당되는 글 1건

3일차 수업

 

1. 객체 ( objec )
주제가 바라보는 대상(사물)을 의미한다.
* 객체의 2가지 특성
a) 속성(attribut) : 객체를 표현하는 방법
b) 동작(operation): 객체의 행위를 의미 

 

2. 객체지향 프로그래밍?
-> 현실세계의 객체를 이용해서 가상세계에서 표현하는 프로그래밍
개발방법을 '객체지향 프로그래밍'이라고 한다.

현실세계 ---------------> 가상세계
객체 ------------------> 클래스
속성 ------------------> 변수 (instance variable)
동작 ------------------> 메소드

 

3. 객체 추출
어떤 어플리케이션을 하던지 필요한 객체를 추출하는 작업이 필요하다.
필요한 것만 필터링하는 작업을 '추상화(abstraction)'라고 한다. 필요없는건 제거

 

4. 클래스 ( class ) 

a) 인스턴스 변수 : 객체의 속성을 표현할 때 사용
b) 메소드 : 객체의 동작을 표현할 때 사용 , 인스턴스 변수를 관리할 때 사용한다.
     (변수에 값을 설정하거나 얻어오는 작업)
c) 생성자 : 인스턴스 변수에 값을 초기화하는 작업시 사용한다.
  

 

5. 클래스 종류 2가지

 

가. 재사용 클래스 
나. 재사용 클래스를 핸들링하는 클래스 ( handling class ) 

 

6. 객체생성 ( 인스턴스 화, 메모리 로딩 )
-> main메소드가 없는 클래스를 메모리에 올려주는 작업을 의미한다.

문법 :  

클래스명 변수명 = new 클래스명();
Student sut = new Student();

 

7. 구성요소 접근

8. 은닉화 ( encapsulation ) 

객체지향 프로그래밍 3대 특징
   가. 상속( inheritance )
   나. 다형성 ( polymorphism )
   다. 은닉화 ( encapsulation )

 

9. 메소드 ( method ) 

용도 : 인스턴스 변수 값 설정 및 얻기
문법 :
 
 public 리턴타입 메소드명(인자) {
 return 값;  //호출한 곳으로 돌아갈 때 가지고 갈 데이터
 }          반드시 값의 데이터형을 리턴타입에 저장한다.
 - 특징 :
 - 반드시 클래스 객체생성 먼저
 - 반드시 호출해야 수행된다.


   수행이 끝나면 호출한 곳으로 돌아온다.
   ( return )

 -> 메소드안에서 선언되 변수인 로컬변수는
   메소드 호출시 생성되고 메소드가 끝나면 제거되는 임시 데이터
   저장용 변수이다. ( stack 메모리 )
 

10. 오버로딩 메소드 (overloading method)

11. 메소드 종류

12. 생성자 ( Constructor )

용도 : 인스턴스 변수에 값을 맨 처음 설정하는 역할 ( 초기화 작업 )
문법 :

 

 public 클래스명(인자){}
 

특징 : 메소드와 비슷하다.
리턴타입이 없다.
반드시 이름은 클래스명으로 지정한다.
호출해야 수행되고, 끝나면 돌아온다.
모든 클래스에는 자동으로 기본생성자를 제공한다.
(==> public 클래스명(){} )

생성자를 명시적으로 제공가능하다. 
단, 생성자를 명시적으로 사용하면 기본 생성자를 제공하지 않는다.
따라서 기본생성자는 항상 명시적으로 작성하자

  

가. worker 생성자 : public 클래스명(인자){}
나. caller 생성자 : new Student(); //콜러 생성자

 

====학습 세부사항 ====

 

1. 객체 ( objec )
객체란?
-> 주제가 바라보는 대상(사물)을 의미한다.
* 객체의 2가지 특성
a) 속성(attribut) : 객체를 표현하는 방법
b) 동작(operation): 객체의 행위를 의미

2. 객체지향 프로그래밍?
-> 현실세계의 객체를 이용해서 가상세계에서 표현하는 프로그래밍
개발방법을 '객체지향 프로그래밍'이라고 한다.

현실세계 ---------------> 가상세계
*객체 ------------------> 클래스
-속성 ------------------> 변수 (instance variable)
-동작 ------------------> 메소드

*객체관계 --------------> has a, is a 관계

3. 객체 추출
-> 어떤 어플리케이션을 하던지 필요한 객체를 추출하는 작업이 필요하다.
-> 필요한 것만 필터링하는 작업을 '추상화(abstraction)'라고 한다. 필요없는건 제거

분석  --->   설계    --->     구현    --->    테스트    ---> 배치
객체추출    다이어그램      소스코드
     ( 그림 )

4. 클래스 ( class )
- 문법 :
 public class 클래스명{ 
 }
- 클래스명은 첫글자 대문자, 의미있는 명사형으로 지정한다.
- 첫글자는 영문자로 지정하고 이후에 숫자지정가능하다.
  특수문자 2개 ( _ $ )만 사용가능하다
- 반드시 클래스명으로 파일저장해야 한다. ( 클래스명 = 파일명 ) 일치해야 한다.
<구성요소 3가지>
a) 인스턴스 변수 : 객체의 속성을 표현할 때 사용
b) 메소드 : 객체의 동작을 표현할 때 사용 , 인스턴스 변수를 관리할 때 사용한다.
     (변수에 값을 설정하거나 얻어오는 작업)
c) 생성자 : 인스턴스 변수에 값을 초기화하는 작업시 사용한다.

 예> 학생관리

 학생객체 -------------------------------------> Student
 - 학번, 이름 ,주소 ---------------------------> int snum;
       String name;
       String address;
 - 동작   -------------------------------------> 메소드

5. 클래스 종류 2가지

 가. 재사용 클래스 
 - 객체관련 클래스 , main 메소드가 없다.
 - 실행이 불가능하다. --> 핸들링 클래스를 통해서 사용이 가능하다.
 예> 학생객체, 컴퓨터 객체, ...

 
 나. 재사용 클래스를 핸들링하는 클래스 ( handling class )
 - main 메소드를 지정
 - 실행이 가능하다.

6. 객체생성 ( 인스턴스 화, 메모리 로딩 )
-> main메소드가 없는 클래스를 메모리에 올려주는 작업을 의미한다.

 문법 :
 클래스명 변수명 = new 클래스명();
 Student sut = new Student();

 * stu 변수
 - 변수
 - 참조형 변수 ( reference 변수 )
   위치값을 저장하는 변수
 - Student 클래스 타입의 변수

7. 구성요소 접근
  --> 객체생성후에 접근 가능하다.

 - 인스턴스 변수 ( 멤버변수 , 클래스 멤버 )
 ==> 참조형변수.멤버변수
 예) stu.snum = 1111;
     stu.name = "수지";
     stu.address = "청주";
  - 메소드 ( 벰버 메소드 , 클레스 멤버 )
   -> 용도 : 인스턴스 변수 값 설정 및 값 얻기

 - 생성자

8. 은닉화 ( encapsulation )

   a) 접근하는 곳

   b) 접근 당하는 곳
      -> stu.name = "수지";
         따라서 직접 접근하지 못하도록 private 로 설정한다.
  private int snum;
  직접접근은 못하고 다른 방법으로 접근한다.
  ( 메소드 이용 )
      예) 달력 객체
 public class MyDate{
  
  int day;
  int month;
  int year;
 }
 MyDate d = new MyDate();
 d.day = 40; //문법적으로는 문제가 없지만 논리적으로 문제발생
 
 * 객체지향 프로그래밍 3대 특징
   가. 상속( inheritance )
   나. 다형성 ( polymorphism )
   다. 은닉화 ( encapsulation )


9. 메소드 ( method )

 - 용도 : 인스턴스 변수 값 설정 및 얻기
 - 문법 :
 
 public 리턴타입 메소드명(인자) {
 return 값;  //호출한 곳으로 돌아갈 때 가지고 갈 데이터
 }          반드시 값의 데이터형을 리턴타입에 저장한다.
 - 특징 :
 - 반드시 클래스 객체생성 먼저
 - 반드시 호출해야 수행된다.
   수행이 끝나면 호출한 곳으로 돌아온다.
   ( return )

 -> 메소드안에서 선언되 변수인 로컬변수는
   메소드 호출시 생성되고 메소드가 끝나면 제거되는 임시 데이터
   저장용 변수이다. ( stack 메모리 )
 <용도 2가지>
a) 인스턴스 변수에 값을 설정
- setter 메소드라고 한다.
- 메소드명은 set변수명(첫글자 대문자)으로 지정한다.
  예) String name;
      setName
      setSnum
      setAddress
b) 인스턴스 변수 값을 얻기
- getter 메소드라고 한다.
- 메소드명은 get변수명(첫글자 대문자)으로 지정한다.
  예) String name;
      getName
      getSnum
      getAddress
- 핸들링 클래스에서 값을 얻는다.

 아키텍쳐
 
 TestStudent                                Student
 
 0.Student 객체생성
  
  1. 호출              Stirng name;
  -------------------> public 리턴타입 getName(인자){

     return name;
         }
  2. 리턴
  <------------------- 

 - 호출방법
   가. 객체생성
    Student stu = new Student();

   나. 메소드 호출
    참조형변수.메소드명(인자);

    예) stu.getName();
 stu.getAddress();
 stu.getSnum();
  
 - 메소드 호출 방법
 : 반드시 메소드명과 인자(파라미터, argument)
   리스트가 일치해야 된다.
 : 인자 리스트
 갯수
 데이터형
 순서

 public void a(int x){  }
 public void b(String x){  }
 public void c(int x){  }

10. 오버로딩 메소드 (overloading method)
-정의 : 같은 클래스내에 동일한 이름의 메소드가 여러개 설정 가능하다.
같은 이름의 여러 메소드를 '오버로딩 메소드'라고 한다.

- 규칙 : argument list가 반드시 달라야 된다.

- 이유?
1) 재사용성
2) 서로다른 메소드를 관리하는 것보다 하나의 이름으로 관리하는것이 쉽다.

11. 메소드 종류

가. worker 메소드
    -> 일반적으로 메소드 지칭한다.
    -> public 리턴타입 메소드명(인자){  }
    -> 종류 2가지
       -setter 메소드
 public void set변수명(인자, 인자2){ }
       -getter 메소드
 public 리턴타입 get변수명(){
 return 값;
 }
나. caller 메소드
-> worker 메소드를 호출하는 메소드를 의미한다.
-> 객체생성후에 사용 가능하다

 예) Student stu = new Student();

 stu.setName("곽보근"); // caller 메소드 
 stu.setAddress("하복대");

 int s = stu.getSnum(); // getter 메소드
* 같은 클래스에서는 그냥 호출하면 된다.

예) getName();

12. 생성자 ( Constructor )

 - 용도 : 인스턴스 변수에 값을 맨 처음 설정하는 역할 ( 초기화 작업 )
 - 문법 :

         public 클래스명(인자){}
 - 특징 : 메소드와 비슷하다.
   리턴타입이 없다.
   반드시 이름은 클래스명으로 지정한다.
   호출해야 수행되고, 끝나면 돌아온다.
   모든 클래스에는 자동으로 기본생성자를 제공한다.
   (==> public 클래스명(){} )

   생성자를 명시적으로 제공가능하다.
   단, 생성자를 명시적으로 사용하면 기본 생성자를 제공하지 않는다.
   따라서 기본생성자는 항상 명시적으로 작성하자

   가. worker 생성자 : public 클래스명(인자){}
   나. caller 생성자 : new Student(); //콜러 생성자

13. 오버로딩 생성자
-> 하나의 클래스내에 동일한 생성자가 여러개 존재 가능하다.
-> 규칙 : argument list가 반

* 은행 프로젝트

- 고객, 직원, 계좌, 은행

- 계좌 객체 -----------------> Account
 : 계좌번호
 : 비밀번호
 : 잔액     -----------------> double balance;

 : 입금     -----------------> deposit 메소드
   출금     -----------------> withdraw 메소드

 : 생성자

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,