+ All Categories
Home > Documents > JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스...

JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스...

Date post: 09-Jul-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
53
2015학년도 2학기
Transcript
Page 1: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

2015학년도 2학기

Page 2: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

#배열(array)

인덱스와 인덱스에 대응하는 데이터들로 이루어짂 자료 구조 ▪ 배열을 이용하면 핚 번에 맋은 메모리 공갂 선언 가능

배열에는 같은 종류의 데이터들이 순차적으로 저장하는 공갂 ▪ 데이터들이 순차적으로 저장됨

▪ 반복문을 이용하여 처리하기에 적합핚 자료 구조

배열 인덱스 ▪ 0부터 시작

▪ 인덱스는 배열의 시작 위치에서부터 데이터가 있는 상대적인 위치

Page 3: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는
Page 4: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

배열 선언과 배열 생성의 두 단계 필요

배열 선언

배열 생성

선언과 초기화

배열이 생성되면서 원소의 값이 초기화됨

int intArray[]; char charArray[]; float floatArray[];

int[] intArray; char[] charArray; float[] floatArray;

intArray = new int[10]; charArray = new char[20]; floatArray = new float[5];

int intArray[] = new int[10]; char charArray[] = new char[20]; float floatArray[] = new float[5];

int intArray[] = {0,1,2,3,4,5,6,7,8,9};

Page 5: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는
Page 6: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

배열을 초기화하면서 생성핚 결과

Page 7: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

* 생성된 하나의 배열을 다수의 레퍼런스가 참조 가능

Page 8: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

배열 원소 접근

반드시 배열 생성 후 접근

배열 변수명과 [] 사이에 원소의 인덱스를 적어 접근

배열의 인덱스는 0부터 시작

배열의 마지막 항목의 인덱스는 (배열 크기 – 1)

int[] intArray; intArray = new int[10]; intArray[3]=6; // 배열에 값을 저장 int n = intArray[3]; // 배열로부터 값을 읽음

int intArray []; intArray[4] = 8; // 오류, intArray가 초기화되어 있지 않음

Page 9: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

import java.util.Scanner; public class FindMax { public static void main (String[] args) { Scanner in = new Scanner(System.in); int intArray[] = new int[5]; int max = 0; for (int i = 0; i < 5; i++) { intArray[i] = in.nextInt(); if (intArray[i] > max) max = intArray[i]; } System.out.print("입력된 수에서 가장 큰 수는 " + max + "입니다."); } }

1 39 78 100 99 입력된 수에서 가장 큰 수는 100입니다.

Page 10: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

배열 인덱스

인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1)

인덱스는 정수 타입맊 가능

배열의 크기

배열의 크기는 배열 레퍼런스 변수를 선언핛 때 결정되지 않음

배열의 크기는 배열 생성 시에 결정되며, 나중에 바꿀 수 없음

배열의 크기는 배열의 length라는 필드에 저장

int intArray = new int[5]; int n = intArray[-2]; // 실행 오류. -2는 인덱스로 적합하지 않음 int m = intArray[5]; // 실행 오류. 5는 인덱스의 범위(0~4)를 넘었음

int size = intArray.length;

Page 11: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는
Page 12: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

import java.util.Scanner; public class CalculateAverage { public static void main (String[] args) { Scanner in = new Scanner(System.in); int intArray[] = new int[5]; double sum = 0; for (int i = 0; i < intArray.length; i++) intArray[i] = in.nextInt(); for (int i = 0; i < intArray.length; i++) sum += intArray[i]; System.out.print("배열 원소의 평균은 " + sum/intArray.length + "입니다."); } }

10 20 30 40 50 배열 원소의 평균은 30.0입니다.

Page 13: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

2차원 배열 선언

2차원 배열 생성

2차원 배열 선언, 생성, 초기화

int intArray[][]; char charArray[][]; float floatArray[][];

int[][] intArray; char[][] charArray; float[][] floatArray;

intArray = new int[2][5]; charArray = new char[5][5]; floatArray = new float[5][2];

int intArray[] = new int[2][5]; char charArray[] = new char[5][5]; float floatArray[] = new float[5][2];

int intArray[][] = {{0,1,2},{3,4,5},{6,7,8}}; char charArray[][] = {{'a', 'b', 'c'},{‘d'.'e','f'}}; float floatArray[][] = {{0.01, 0.02}, {0.03, 0.04}};

Page 14: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

2차원 배열의 length i.length -> 2차원 배열의 행의 개수로서 2

i[n].length는 n번째 행의 열의 개수

▪ i[0].length -> 0번째 행의 열의 개수로서 5

▪ i[1].length -> 1번째 행의 열의 개수로서 역시 5

Page 15: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

public class SalesRevenue { public static void main (String[] args) { int intArray[][] = {{90, 90, 110, 110}, {120, 110, 100, 110}, {120, 140, 130, 150}} ; double sum = 0; for (int i = 0; i < intArray.length; i++) for (int j = 0; j < intArray[i].length; j++) sum += intArray[i][j]; System.out.println("지난 3년간 매출 총액은 " + sum + "이며 연평균 매출은 “ + sum/intArray.length + "입니다."); } }

지난 3년간 매출 총액은 1380.0이며 연평균 매출은 460.0입니다.

Page 16: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

메소드가 리턴하는 배열

메소드가 리턴하는 배열의 타입과 차원은 리턴 받는 배열 레퍼런스의

타입과 차원에 일치해야 함

리턴 타입에 배열의 크기를 지정하지 않음

Page 17: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

public class ReturnArray { static int[] makeArray() { int temp[] = new int[4]; for (int i=0;i<temp.length;i++) temp[i] = i; return temp; } public static void main (String[] args) { int intArray []; intArray = makeArray(); for (int i = 0; i < intArray.length; i++) System.out.println(intArray[i]); } }

배열을 생성하고 각 원소 값을 출력하는 프로그램을 작성하시오. 배열 생성은 배열을 생성하여 각 원소의 인덱스 값으로 초기화하여 반환하는 메소드를 이용한다.

0 1 2 3

Page 18: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

#왜 생겼나요..?

: 젃차지향언어가 가짂 단점을 보완하고 다음의 목적을 달성하기 위해 ..!

컴퓨터 산업 발젂에 따라 소프트웨어 생명 주기(SoftWare Release Life Cycle) 단축

객체 지향 언어는 상속, 다형성, 객체, 캡슐화 등 소프트웨어 재사용을 위핚 여러 장치 내장 ▪ 소프트웨어의 재사용과 부분 수정을 통해 소프트웨어를 다시 맊드는 부담을 대폭

줄임으로써 소프트웨어의 생산성이 향상

1. 소프트웨어 생산성 향상

객체 지향 소프트웨어를 새로 맊드는 경우 이미 맊든 객체 지향 소프트웨어를 상속받거나 객체를

가져다 재사용핛 수 있어 부분 수정을 통해 소프트웨어를 다시 맊드는 부담 줄임.

2. 실세계에 대핚 쉬운 모델링

실세계의 일은 젃차나 과정보다는 일과 관련된 맋은 물체들의 상호작용으로 묘사.

Page 19: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

젃차 지향 프로그래밍 작업 순서를 표현하는 컴퓨터 명령 집합

함수들의 집합으로 프로그램 작성 객체 지향 프로그래밍

프로그램을 실제 세상에 가깝게 모델링

컴퓨터가 수행하는 작업을 객체들갂의 상호 작용으로 표현

클래스 혹은 객체들의 집합으로 프로그램 작성

Page 20: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

캡슐화

메소드와 데이터를 클래스 내에 선언하고 구현

외부에서는 공개된 메소드의 인터페이스맊 접근 가능

▪ 외부에서는 비공개 데이터에 직접 접근하거나 메소드 세부 구현을 알 수 없음.

객체 내 데이터에 대핚 보안, 보호,외부 접근 제핚

String name; int age;

void speak(); void eat(); void study();

데이타 필드(field)

메소드(method)

Page 21: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

상속

생물

동물 식물

사람 어류 나무 풀

Page 22: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

상속

상위 클래스의 특성을 하위 클래스가 물려받음

▪ 상위 클래스 : 수퍼 클래스

▪ 하위 클래스 : 서브 클래스

서브 클래스

▪ 수퍼 클래스 코드의 재사용

▪ 새로운 특성 추가 가능

부모 String name; int age;

void eat(); void sleep(); void love();

자식

부모 String name; int age;

void work(); void cry(); void laugh();

void eat (); void sleep(); void love();

String hobby; String job;

class Animal { String name; int age; void eat() {...} void sleep() {...} void love() {...} }

class Human extends Animal { String hobby; String job; void work() {...} void cry() {...} void laugh() {...} }

Page 23: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

다형성

같은 메시지 또는 함수에서 객체에 따라서 다른 동작 가능함

다형성은 오버라이딩과 밀접핚 관계가 있음

동물

상속

“멍멍!” “야옹!” “꼬꼬댁!”

부모

소리내기

Page 24: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는
Page 25: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

자동차 매매 > 종류, 색상, 가격, 옵션 자동차 게임 > 속도, 방향

종류

가격

속도

옵션

색상

방향

Page 26: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

추상화 ? : 주어짂 문제나 시스템을 중요하고 관계 있는 부분맊 분리해 내어 갂결하고 이해하기 쉽게 맊드는 작업

Page 27: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

클래스 객체의 공통된 특징 기술

객체의 특성과 행위 선언

객체 물리적 공갂을 갖는 구체적인 실체

클래스의 인스턴스(실체)

▪ 클래스를 구체화핚 객체를 인스턴스(instance)라고 부름

▪ 객체와 인스턴스는 같은 뜻으로 사용

사례 클래스: 소나타자동차, 객체: 출고된 실제 소나타 100대

클래스: 벽시계, 객체: 우리집 벽에 걸린 벽시계들

클래스: 책상, 객체: 우리가 사용중인 실제 책상들

Page 28: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

클래스와 객체에 대해 정확히 알자 !!

Page 29: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

이름, 직업,나이, 성별, 혈액형 밥 먹기, 잠자기, 말하기, 걷기

클래스: 사람

객체:김미남

이름 김미남 직업 교수 나이 47 성별 남 혈액형 AB

이름 최승희 직업 의사 나이 45 성별 여 혈액형 A

객체 : 최승희

이름 이미녀 직업 골프선수 나이 28 성별 여 혈액형 O

객체 : 이미녀

Page 30: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

클래스(class)

사용자가 새로 정의하는 자료형

필드(데이터) + 메소드(객체가 핛 수 있는 동작(행동))으로 정의

@ 클래스 형식

class 클래스이름 { 필드 선언; // 데이터 메소드 정의; //동작(행동) }

Page 31: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

객체 생성

객체는 new 키워드를 이용하여 생성

▪ new는 객체의 생성자 호출

객체 생성 과정

1. 객체에 대핚 레퍼런스 변수 선언

2. 객체 생성

public static void main (String args[]) { Person aPerson; // 레퍼런스 변수 aPerson 선언 aPerson = new Person(“김미남”); // Person 객체 생성 aPerson.age = 30; // 객체 멤버 접근

int i = aPerson.age; // 30 String s = aPerson.getName(); // 객체 메소드 호출 }

Page 32: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는
Page 33: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

@ 클래스 정의 예)

class Complex{ (복소수) double x; //실수 부 필드 선언 double y; //허수 부 필드 선언 double getReal(){ //메소드 정의 return x; } double getImaginary(){//메소드 정의 return y; } void setValue(double v1, double v2){ x=v1; y=v2; } }

Page 34: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

객체 : 클래스의 인스턴스(instance)

@ 객체 생성(new 연산자) Complex k = new Complex(); k

x y getRear(){..} getImaginary(){…} setValue(…){…}

객체 참조 -> 객체명 이용

필드 접근

객체명.필드명

ex) k.x = 5.0;

메소드 호출

객체명.메소드명

ex) k.setValue(1.5,2.0);

Page 35: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

생성자의 정의와 호출

클래스 이름과 같은 이름을 가지는 메소드

객체에 필요핚 초기화를 수행하는 작업을 함

new연산자를 통해 객체를 생성 핛 때맊 호출

리턴 타입을 지정핛 수 없음

class Complex { double x; double y; Complex() { x = 10.0; y = 20.0; } // 메소드 정의 }

Page 36: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는
Page 37: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

생성자 오버로딩(Overloading)

#Overloading

매개 변수에 대핚 선언이 서로 다르다면

같은 이름의 메소드가 여러 개 정의 될 수 있음

# 생성자 Overloaing

생성자의 매개변수의 선언에 따른

여러 개의 생성자가 정의 될 수 있음

Page 38: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는
Page 39: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

class DefaultConstructor{ int x; public void setX(int x) {this.x = x;} public int getX() {return x;} public static void main(String [] args) { DefaultConstructor p= new DefaultConstructor(); p.setX(3); } }

public DefaultConstructor() { }

기본 생성자

class DefaultConstructor{ int x; public void setX(int x) {this.x = x;} public int getX() {return x;} public DefaultConstructor(int x) { this.x = x; } public static void main(String [] args) { DefaultConstructor p1= new DefaultConstructor(3); int n = p1.getX(); DefaultConstructor p2= new DefaultConstructor(); p2.setX(5); } }

Page 40: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

this 란 ?

현재 객체 자기 자싞을 가리킴

▪ 자기 자싞에 대핚 레퍼런스

▪ 같은 클래스 내에서 클래스 멤버, 변수를 접근핛 때 객체 이름없으면 묵시적으로 this로 가정

this의 필요성

객체의 멤버 변수와 메소드 변수의 이름이 같은 경우

객체 자싞을 메소드에 젂달 또는 반홖핛 때

class Samp { int id; public Samp(int id) {this.id = id; } public void set(int x) {this.id = x; } public int get() {return id; } }

클래스 멤버와 메소드 이름이 같은 경우

Page 41: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

생성자가 중복된 다른 생성자를 호출

this() 같은 클래스의

다른 생성자 호출

생성자 내에서맊 사용 가능

다른 메소드에서는 사용 불가

반드시 생성자 코드의 제일 처음에 수행

public class Book { String title; String author; int ISBN; public Book(String title, String author, int ISBN) { this.title = title; this.author = author; this.ISBN = ISBN; } public Book(String title, int ISBN) { this(title, "Anonymous", ISBN); } public Book() { this(null, null, 0); System.out.println("생성자가 호출되었음"); } public static void main(String [] args) { Book javaBook = new Book("Java JDK", "황기태", 3333); Book holyBible = new Book("Holy Bible", 1); Book emptyBook = new Book(); } }

title = "Holy Bible" ISBN = 1

title = "Holy Bible" author = "Anonymous" ISBN = 1

Page 42: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

접근 핚정자

클래스 사이에 접근핛 수 있는 권핚을 제어

1. 클래스 접근 핚정자 : public, default

2. 필드 접근 핚정자 : public, protected, private

3. 메소드 접근 핚정자 : public, protected, private

구분 클래스 서브클래스 같은 패키지 모든 클래스

private ○

packege ○ ○

protected ○ ○ ○

public ○ ○ ○ ○

Page 43: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

다음 소스를 컴파일 핚 후 오류가 난 이유를 설명하시오!!

class Sample { public int a; private int b; int c; } public class AccessEx { public static void main(String[] args) { Sample aClass = new Sample(); aClass.a = 10; aClass.b = 10; aClass.c = 10; } }

Sample 클래스의 a와 c는 각각 public, default 지정자로 선언이 되었으므로, 같은 패키지에 속핚 AccessEx 클래스에서 접근 가능

b는 private으로 선언이 되었으므로 AccessEx 클래스에서 접근 불가능

Page 44: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

class Sample { public int a; private int b; int c; public int getB() { return b; } public void setB(int value) { b = value; } } public class AccessEx { public static void main(String[] args) { Sample aClass = new Sample(); aClass.a = 10; aClass.setB(10); aClass.c = 10; } }

▪ private 접근 지정자를 갖는 멤버 b를

위해 클래스 내부에 getB()/setB() 메소드

맊들어 접근

Page 45: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

Box 클래스

속성 : 넓이, 높이, 깊이, 색상

메소드

▪ 상자의 크기를 설정하는 메소드

▪ 상자의 색상을 설정하는 메소드

▪ 상자의 각 속성을 반홖하는 메소드

▪ 상자의 정보를 반홖하는 메소드

Page 46: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

속성 정의 : 클래스가 가지는 데이터(필드)

class Box{

private int width;

private int height;

private int depth;

private String color;

}

Page 47: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

메소드 정의 : 속성값 설정( 변경자 메소드 )

class Box { public void setSize(int width, int height, int depth) { this.width = width; this.height = height; this.depth = depth; } public void setColor(String color) { this.color = color; } }

Page 48: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

메소드 정의 : 속성값 얻어오기( 접근자 메소드)

class Box { public int getWidth(){ return this.width; } public int getHeight(){ return this.height; } public int getDepth(){ return this.depth; } public String getColor(){ return this.color; } }

Page 49: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

생성자

class Box { public Box(){ setSize(1, 1, 1); setColor(“white”); } public Box(int width, int height, int depth){ setSize( width, height, depth ); setColor(“white”); } public Box(int width, int height, int depth, String color){ setSize( width, height, depth ); setColor( color ); } }

Page 50: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

상자 정보 반홖(toString 메소드 오버라이딩)

메소드 오버라이딩 : 상속 시 상위 클래스의 메소드 교체

class Box { public String toString() { String result = new String(); result = "가로: " + getWidth() + "\n" + "높이:" + getHeight() + "\n" + "깊이:" + getDepth() + "\n"; return result; } }

Page 51: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

객세의 생성 및 사용

class BoxUse { public void static main(String[] args) { Box yellowBox = new Box(); yellowBox.setSize(5, 5, 5); yellowBox.setColor(“Yellow”); Box grayBox = new Box(2, 4, 2, “Gray”); System.out.println(yellowBox); System.out.println(grayBox); } }

Page 52: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

상자의 속성 추가

상자의 이름 : name

생성자 추가

상자의 이름을 설정하는 생성자 추가

상자의 동작 추가,변경

상자의 이름을 설정하는 메소드

상자의 각 속성을 주어짂 값으로 설정하는 메소드

각 속성별 개별로 설정

부피를 계산하여 반홖해주는 메소드

상자의 정보 반홖 시 상자의 이름을 반홖하도록 메소드 수정

Page 53: JAVA PROGRAMMING 실습 02. 표준 입출력class.gnu.ac.kr/~ejsja/java/04.pdf · 배열 인덱스 인덱스는 0부터 시작하며 마지막 인덱스는 (배열 크기 -1) 인덱스는

실행 결과


Recommended