Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java 6장. 클래스 : 속성 public class SumTest {

Similar presentations


Presentation on theme: "Java 6장. 클래스 : 속성 public class SumTest {"— Presentation transcript:

1 Java 6장. 클래스 : 속성 public class SumTest {
public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 System.out.println("두수의 합은 " + sum + "입니다"); }

2 학습목표 클래스의 속성에 해당하는 부분에 관해 학습한다. 클래스의 일반구조와 클래스 선언부분에 대해 학습한다.
클래스로부터 객체를 생성하는 과정을 학습한다. 클래스의 속성에 해당하는 멤버 변수에 관해 학습한다. 캡슐화를 지원하는 멤버 변수 접근 한정자에 관해 학습한다. 변수의 유효범위에 관해 학습한다.

3 목차 section 1 클래스의 일반 구조 section 2 클래스 선언 section 3 객체의 생성
4-1 객체 변수 4-2 클래스 변수 4-3 종단(final) 변수 4-4 멤버 변수 접근 방법 section 5 멤버 변수 접근 한정자 5-1 public 5-2 private 5-3 한정자 없음 section 6 변수의 유효범위(Scope)

4 1-1 객체지향 이론과 역사 클래스의 구성 1 클래스의 일반 구조 속성에 해당하는 멤버 변수 부분
기능에 해당하는 생성자(생성자 메소드라고도 부름) 메소드 정의 187page

5 실습예제 1 클래스의 일반 구조 Box_Sample.java 01 02 03 04 05 06 07 08 09 10 11 12
13 14 15 16 17 public class Box_Sample { int width; int height; int depth; int volume; Box_Sample(int w, int h, int d) { width = w; height = h; depth = d; } int volume_compute() volume = width * height * depth; return volume; 속성 생성자 기능 메소드

6 클래스 선언 클래스의 한정자 [public/final/abstract] class Class-name { 형식
2 클래스 선언 클래스 선언 클래스의 한정자 Public : 모든 클래스에서 접근 가능 한정자 사용 안 함 : 패키지 내의 클래스에서만 접근 가능 Final : 서브 클래스를 가질 수 없는 클래스 추상(abstract) : 객체를 생성할 수 없는 클래스 [public/final/abstract] class Class-name { 클래스의 속성과 기능을 기술 } 형식

7 속성만 가지는 클래스 형식 class Box { int width; int height; int depth; }
2 클래스 선언 속성만 가지는 클래스 class Box { int width; int height; int depth; } 형식 속성

8 속성과 메소드를 가지는 클래스 형식 class Box { int width; int height; int depth;
2 클래스 선언 속성과 메소드를 가지는 클래스 class Box { int width; int height; int depth; public void volume() { int vol; vol = width * height * depth; System.out.println("Volume is "+vol); } 형식 속성 메소드

9 속성, 생성자, 메소드를 가지는 클래스 class Box { int width; 형식 int height; int depth;
2 클래스 선언 속성, 생성자, 메소드를 가지는 클래스 class Box { int width; int height; int depth; public void Box(int w, int h, int d) { width=w; height=h; depth=d; } public void volume() { //메소드 int vol; vol = width * height * depth; System.out.println("Volume is "+vol); 형식 속성 메소드 메소드

10 3 객체의 생성 객체의 선언 클래스명 객체 변수; 형식 Box mybox1; Avg student1; String name;

11 객체의 생성 객체 변수 = new 클래스명; 형식 3 객체의 생성 Box mybox1;
mybox1 = new Box(10,20,30);

12 객체의 선언과 생성 클래스명 객체 변수 = new 클래스명(); 형식 3 객체의 생성
Box mybox1 = new Box(10, 20, 30); Avg student1 = new Avg(); String name = new String("홍길동");

13 객체의 선언과 생성 3 객체의 생성 class Box { int width; int height; int depth; }
class MyBox { Box mybox1; Box mybox2; mybox1 = new Box(); mybox2 = new Box(); 193 page

14 실습예제 3 객체의 생성 Box1Test.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14
15 16 17 18 class Box1 { int width; int height; int depth; } public class Box1Test { public static void main(String args[]) { Box1 mybox1 = new Box1(); Box1 mybox2 = new Box1(); int vol1, vol2; mybox1.width = 20; mybox1.height = 40; mybox1.depth = 15; mybox2.width = 10; mybox2.height = 20; mybox2.depth = 30; 객체의 속성만 가진 클래스 Box1 클래스로부터 객체 생성 객체의 속성에 값을 배정

15 실습예제 3 객체의 생성 Box1Test.java 19 20 21 22 23 24 25 26
vol1 = mybox1.width * mybox1.height * mybox1.depth; System.out.println(" 첫번째 박스의 부피는 " + vol1 + "입니다."); vol2 = mybox2.width * mybox2.height * mybox2.depth; System.out.println(" 두 번째 박스의 부피는 " + vol2 + "입니다."); }

16 프로그램 설명 3 객체의 생성 01 : 클래스 Box1은 속성만 가진 클래스이다.
12~18 : 각 객체의 속성에 특정 값을 저장하였다.  20~24 : 각 객체의 속성값을 이용하여 박스의 부피를 계산하였다. 

17 멤버 변수 멤버 변수의 구분 멤버 변수의 선언 [public/private] [static/final] 변수타입 변수명; 형식
4 멤버 변수 멤버 변수 클래스에서 메소드 외부에 선언된 변수 멤버 변수의 구분 멤버 변수의 선언 196 page [public/private] [static/final] 변수타입 변수명; 형식

18 4-1 객체 변수 객체 변수 4 멤버 변수 객체가 가질 수 있는 특성을 표현 ............
4-1 객체 변수 객체 변수 객체가 가질 수 있는 특성을 표현 int my_count1 = 100; int my_count2 = my_count1; Box mybox1 = new Box(); Box mybox2 = mybox1;

19 4 멤버 변수 4-1 객체 변수 배정문에서의 객체 변수의 다른 특성 198 page

20 4-1 객체 변수 실습예제 4 멤버 변수 Box2Test.java 01 02 03 04 05 06 07 08 09 10 11
4-1 객체 변수 실습예제 Box2Test.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 class Box2 { int width=10; int height=20; int depth=30; } public class Box2Test { public static void main(String args[]) { int myint1 = 100; int myint2 = myint1; System.out.println("첫 번째 값 : " + myint1 + " 두 번째 값 : " + myint2); myint1 = 200; Box2 mybox1 = new Box2(); 속성으로 값을 지정

21 4-1 객체 변수 실습예제 4 멤버 변수 Box2Test.java 16 17 18 19 20 21 22 23 24 25 26
4-1 객체 변수 실습예제 Box2Test.java 16 17 18 19 20 21 22 23 24 25 26 27 28 Box2 mybox2 = mybox1; mybox1.width = 20; System.out.println("mybox1.width : " + mybox1.width); System.out.println("mybox2.width : " + mybox2.width); mybox2.depth = 123; System.out.println("mybox1.depth : " + mybox1.depth); System.out.println("mybox2.depth : " + mybox2.depth); } 객체 변수에 객체 변수를 배정 mybox1의 width 속성값 변경 같은 값이 출력 mybox2의 depth 속성값 변경 같은 값이 출력

22 4 멤버 변수 4-1 객체 변수 프로그램 설명 02~04 : 클래스의 속성으로 변수의 형과 변수명만 지정될 수도 있고, 직접 값을 지정할 수도 있다. 08~12 : 기본 자료형인 정수 값을 가지는 변수는 배정문을 사용하면 값이 직접 복사되어 한 변수의 값이 변화되어도 다른 변수에 영향을 미치지 않는다. 13~26 : 참조 자료형인 객체를 가지는 객체 변수를 다른 객체 변수에 배정하게 되면, 두 개의 객체 변수는 같은 객체를 가리키게 된다. 이 경우 한 객체 변수를 통해서 객체의 속성을 변경하면, 다른 객체 변수를 통해서 접근하는 값도 변경되게 된다.

23 4-2 클래스 변수 클래스 변수 static 변수형 변수명; 형식 4 멤버 변수 static을 사용하여 선언
4-2 클래스 변수 클래스 변수 static을 사용하여 선언 전역변수(global variable)의 개념 static 변수형 변수명; 형식 static long boxid; static double degree;

24 4 멤버 변수 4-2 클래스 변수 클래스 변수의 사용 201 page

25 4-2 클래스 변수 실습예제 4 멤버 변수 Box3Test.java 01 02 03 04 05 06 07 08 09 10
4-2 클래스 변수 실습예제 Box3Test.java 01 02 03 04 05 06 07 08 09 10 class Box3 { int width; int height; int depth; long idNum; static long boxID = 0; public void increment() { idNum = ++boxID; } 클래스 변수 선언 메소드가 호출될 때마다  클래스 변숫값 증가

26 4-2 클래스 변수 실습예제 4 멤버 변수 Box3Test.java 11 12 13 14 15 16 17 18 19 20 21
4-2 클래스 변수 실습예제 Box3Test.java 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 class Box3Test { public static void main(String args[]) { Box3 mybox1 = new Box3(); Box3 mybox2 = new Box3(); Box3 mybox3 = new Box3(); Box3 mybox4 = new Box3(); mybox1.increment(); mybox2.increment(); mybox3.increment(); mybox4.increment(); System.out.println("mybox1의 id 번호 : " + mybox1.idNum); System.out.println("mybox2의 id 번호 : " + mybox2.idNum); System.out.println("mybox3의 id 번호 : " + mybox3.idNum); System.out.println("mybox4의 id 번호 : " + mybox4.idNum); System.out.println("전체 박스의 개수는 " + Box3.boxID + "입니다."); } 클래스 변수에  접근할 때는 클래스 명을  통해서 접근

27 4 멤버 변수 4-2 클래스 변수 프로그램 설명 06 : 클래스의 속성으로 클래스 변수를 선언하였다. 이 변수는 이 클래스로부터 생성된 객체들에 의해 공유되는 변수이다. 26 : 클래스 변수는 클래스 명을 통해서 접근하는 것이 원칙이다. 

28 4-3 종단(final) 변수 종단 변수 final 변수형 = 변숫값; 형식 4 멤버 변수
final int MAX =100; final int MIN = 1;

29 4-4 멤버 변수 접근 방법 클래스 변수와 객체 변수에 접근하기 위해서는 “.”을 이용 클래스 변수 접근 방법
4-4 멤버 변수 접근 방법 클래스 변수와 객체 변수에 접근하기 위해서는 “.”을 이용 클래스 변수 접근 방법 클래스이름.클래스변수 or 객체이름.클래스변수 형식

30 4-4 멤버 변수 접근 방법 객체 변수 접근 방법 객체이름.객체변수 형식 4 멤버 변수 class A { int aa;
4-4 멤버 변수 접근 방법 객체 변수 접근 방법 객체이름.객체변수 형식 class A { int aa; int bb; int cc; static int s = 0; } class ATest { public static void main(String args[]) { A obja = new A(); obja.aa = 4; obja.bb = obja.aa * 2; obja.cc = A.s;

31 5-1 public 클래스 내의 멤버 변수 접근을 제한할 수 있는 방법으로 접근 한정자를 제공
5 멤버 변수 접근 한정자 public 클래스 내의 멤버 변수 접근을 제한할 수 있는 방법으로 접근 한정자를 제공 public으로 선언된 객체 변수는 항상 접근 가능하다는 것을 의미 class Box3 { public int width; public int height; public int depth; public long idNum; static long boxID = 0; public void increment() { idNum = ++boxID; } Box3 mybox1 = new Box3(); mybox1.width = 7; mybox2.depth = 20;

32 5-2 private private로 선언된 객체 변수는 소속된 클래스 내에서만 사용 5 멤버 변수 접근 한정자
class Box3 { private int width; private int height; private int depth; private long idNum; static long boxID = 0; public void increment() { idNum = ++boxID; } Box3 mybox1 = new Box3(); mybox1.width = 7; mybox2.depth = 20; 오류 발생

33 5-3 한정자 없음 한정자를 지정하지 않을 경우 같은 패키지에 속한 클래스에서는 제한 없이 사용이 가능
5 멤버 변수 접근 한정자 5-3 한정자 없음 한정자를 지정하지 않을 경우 같은 패키지에 속한 클래스에서는 제한 없이 사용이 가능

34 메소드 지역변수와 메소드 매개변수는 메소드 내에서만 사용할 수 있는 변수
6 변수의 유효범위(Scope) 변수의 유효범위 그 변수가 사용될 수 있는 영역을 의미 유효범위 측면에서의 변수들을 구분 멤버 변수 메소드 매개변수와 지역변수 예외 처리기 매개변수(exception handler parameter) 클래스 내에 메소드 밖에서 선언된 변수를 의미 메소드 지역변수와 메소드 매개변수는 메소드 내에서만 사용할 수 있는 변수

35 6 변수의 유효범위(Scope) 변수의 유효범위 207 page

36 학습정리 클래스의 일반 구조 클래스 선언 객체의 생성 클래스는 “속성+기능”으로 구성된다.
클래스에는 기능을 나타내는 생성자(또는 생성자 메소드)와 메소드가 있다. 클래스 선언 클래스 선언 시 한정자를 사용할 수 있다. 클래스에는 속성만 나올 수도 있고, 메소드만 있을 수도 있다. 객체의 생성 객체의 선언과 생성과정을 통해 객체를 사용할 수 있다. 객체를 생성하기 위해 new라는 예약어를 사용한다.

37 학습정리 멤버 변수 객체의 속성을 나타내는 멤버 변수에는 객체 변수, 클래스 변수, 종단 변수가 있다.
객체 변수는 특성에 따라 기본 자료형을 가지는 객체 변수와 참조 자료형을 가지는 객체 변수가 있다. 기본 자료형을 가진 객체 변수는 실제 값을 가진다. 참조 자료형을 가진 객체 변수는 값이 아닌 객체의 주소를 가진다. 클래스 변수는 그 클래스로부터 생성된 객체들이 공유하는 변수이다. 종단 변수는 상수를 정의하는데 사용되며, 주로 변수명을 대문자로 사용하는 것이 관례이다. 멤버 변수에 접근하는 방법은 객체 변수는 객체명을, 클래스 변수는 클래스명을 사용하여 접근한다.

38 학습정리 멤버 변수 접근 한정자 변수의 유효범위
자바는 멤버 변수 접근 한정자를 제공하여 객체지향의 주요 특성인 캡슐화와 정보은폐를 제공한다. public 한정자는 접근에 제한이 없는 한정자이다. 프로그램에서는 보안상 public의 사용을 최소화해야 한다. private 한정자는 그 클래스 내부에서만 사용할 수 있는 한정자이다. 한정자를 지정하지 않고 사용하는 경우는 같은 패키지에 속한 클래스에서는 제한없이 사용할 수 있다. 변수의 유효범위 변수의 유효범위는 그 변수가 사용될 수 있는 영역을 의미한다.

39 6장. 클래스 : 속성 수고하셨습니다. 질문 있습니까?


Download ppt "Java 6장. 클래스 : 속성 public class SumTest {"

Similar presentations


Ads by Google