1. 객체지향이란 ?
- 실제 세계를 모델링 하여 SW를 개발하는 방법.
- 현실세계에서 존재하는 실체 및 개념들을 객체라는 독립된 단위로 구성하고 이 객체들이 메세지 교환을 통해 상호작용함으로써 전체 시스템이 운영되는 개념
- 현실세계의 개체를 데이터와 오퍼레이션이 결합된 형태의 객체로 표현
특징
- 데이터가 중심
>> 데이터가 바뀌면 객체자체가 바뀌기 때문에 중요한 데이터는 외부에서 접근 못하게 해야함
- 성능보다는 개발의 편리성과 효율성을 높이는데 목적이 있음
- 관리하는 데이터를 정의하고, 이에 필요한 명령어를 추가
- 쉬운 프로그램의 개발로 인한 생산성 향상 시킬 수 있음
- 프로그램 모듈을 재사용 할 수 있음.
- 프로그램의 확장 및 유지 보수가 용이
2. 객체(Object) ?
객체 = 상태 + 동작
= 속성 + 프로시저
= 필드 + 메소드
3. 인스턴스(Instance) ?
객체를 메모리에 할당받은 상태.
>> 인스턴스 변수 : 객체를 생성 할 때마다 메모리 할당을 받음
4. 클래스 (Class) ?
객체에 적용할 수 있는 데이터와 오퍼레이션을 정의한 SW설계도
* 클래스 생성에 필요한 두가지
1. 뭘 저장하지?
2. 뭘 만들지?
1. 클래스 작성법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package ex0731;
/* 1. 추상화
*
* - 성적처리 CLASS
*
* - 속성 (멤버 변수 or 필드)
* 이름, 국어, 영어
*
* - 기능(메소드)
* 1. 총점을 계산한다.
* 2. 평균을 계산한다
*
* 2. 클래스 만들기
* 3. 객체생성
* */
public class Class_Score {
//속성(필드, 인스턴스 변수)
String name;
int Kor, Eng;
//기능(인스턴스메소드)
public int tot() {
return Kor+Eng;
}
public int ave() {
return tot()/2;
}
}
//public class는 하나만생성!!!!!!
//class {}는 한 파일에 계속 생성할 수 있지만 이렇게 생성하면 어지러움!!
|
cs |
2. Score클래스의 객체 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package ex0731;
import java.util.Scanner;
// " . : 점 " --> 객체에 대한 속성으로 접근하는 연산자 (우선순위 TOP!!)
// 사용 할 클래스가 동일한 위치에 없으면 import해야함
public class Class_Test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//방법1)
// 레퍼런스변수 선언
Class_Score ob1;
// 객체 생성
ob1 = new Class_Score();
//방법2)
//객체 선언 및 메모리 할당
//Class_Score ob2 = new Class_Score();
//System.out.println(ob1.name + ":"+ ob1.tot()); //null:0
System.out.print("이름은 ? ");
ob1.name = sc.next();
System.out.print("국어점수 ? ");
ob1.Kor = sc.nextInt();
System.out.print("수학점수 ? ");
ob1.Eng = sc.nextInt();
System.out.println(ob1.name + " 총점: "+ ob1.tot()+" 평균: "+ob1.ave()); //입력한 이름 : 총점
sc.close();
}
}
|
cs |
객체지향의 특징
1. 추상화
객체에서 공통된 속성과 행위를 추출하는것
2. 캡슐화
- 객체의 속성과 행위를 하나로 묶고 실제 구현내용을 외부에 감추어 은닉한다.
- 객체 외부에서는 개체 내부 정보를 직접 접근하거나 조작할 수 없고, 외부에서 접근할 수 있도록 정의된 오퍼레이션을 통해서만 관련 데이터에 접근 할 수 있다.
* 정보은닉
정보은닉은 한 모듈에서 인터페이스와 구현을 명확히 분리하여 각 모듈의 내부 항목에 관한 정보는
감추고, 인터페이스를 통해서만 메세지를 전달함으로 다른 모듈을 변경하지 못하도록 한다.
-> 캡슐화했다고 해서 그 자체로 내부의 정보가 외부에 숨겨지지 않는다.
3. 상속
- 상속은 클래스의 속성과 행위를 하위 클래스에 물려주거나, 상위 클래스에서 물려받는 것을 지칭.
4. 다형성
- 하나의 클래스 내부에 같은 이름의 메소드를 여러 개 정의하거나, 상위 클래스의 오퍼레이션을
하위 클래스에서 다시 정의하여 사용하는 것을 다형성이라 함
[ 다형성의 특징 ]
- Overloading : 동일한 이름의 Operation 사용 - 수평적
- Overriding : 슈퍼 클래스의 메소드를 서브클래스에서 재정의 - 수직적
* 막간 설명!
코드작성 -> 컴파일 -> 실행
번역 메모리할당
'JAVA' 카테고리의 다른 글
[JAVA] 레퍼런스 변수 (0) | 2020.08.03 |
---|---|
[JAVA] 클래스 (0) | 2020.07.31 |
[JAVA] 명령 행 인수 (0) | 2020.07.31 |
[JAVA] ArrayCopy(배열복사) (0) | 2020.07.31 |
[JAVA] TwoDimensionArray(2차원배열) (0) | 2020.07.30 |