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 메소드
: 생성자