JAVA PROGRAMMING 실습 02. 표준 입출력

Similar documents
JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint Presentation

PowerPoint Presentation

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

(Microsoft PowerPoint - java1-lecture4.ppt [\310\243\310\257 \270\360\265\345])

JAVA PROGRAMMING 실습 08.다형성

Microsoft PowerPoint - java1-lecture4.ppt [호환 모드]

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint Presentation

gnu-lee-oop-kor-lec06-3-chap7

Microsoft PowerPoint - 4장

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - 2강

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint 프레젠테이션

PowerPoint Presentation

PowerPoint 프레젠테이션

4Àå

PowerPoint 프레젠테이션

PowerPoint Presentation

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Microsoft PowerPoint - 3장

슬라이드 1

PowerPoint Presentation

PowerPoint 프레젠테이션

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint 장강의노트.ppt

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - Lect04.pptx

JAVA PROGRAMMING 실습 07. 상속

Microsoft Word - java19-1-midterm-answer.doc

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Design Issues

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - Java7.pptx

쉽게 풀어쓴 C 프로그래밍

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint Presentation

C++ Programming

슬라이드 1

제11장 프로세스와 쓰레드

5장.key

C++ Programming

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

PowerPoint Presentation

Microsoft PowerPoint - additional01.ppt [호환 모드]

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - additional08.ppt [호환 모드]

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

17장 클래스와 메소드

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint Presentation

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - Chap12-OOP.ppt

KNK_C_05_Pointers_Arrays_structures_summary_v02

02장.배열과 클래스

PowerPoint Presentation

Microsoft PowerPoint - 04-UDP Programming.ppt

교육자료

Microsoft PowerPoint - ch07 - 포인터 pm0415

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - chap11

No Slide Title

쉽게 풀어쓴 C 프로그래밍

Microsoft Word - EEL2 Lab4.docx

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - Chapter 6.ppt

설계란 무엇인가?

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

자바 프로그래밍

설계란 무엇인가?

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

Slide 1

Microsoft PowerPoint - java1-lecture3.ppt [호환 모드]

PowerPoint Template

쉽게

JVM 메모리구조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

PowerPoint Presentation

PowerPoint Template

Microsoft PowerPoint - java2 [호환 모드]

Transcription:

2015 학년도 2 학기

# 배열 (array) 인덱스와인덱스에대응하는데이터들로이루어짂자료구조 배열을이용하면핚번에맋은메모리공갂선언가능 배열에는같은종류의데이터들이순차적으로저장하는공갂 데이터들이순차적으로저장됨 반복문을이용하여처리하기에적합핚자료구조 배열인덱스 0부터시작 인덱스는배열의시작위치에서부터데이터가있는상대적인위치

배열선언과배열생성의두단계필요 배열선언 int char float intarray[]; chararray[]; floatarray[]; int[] char[] float[] intarray; chararray; floatarray; 배열생성 intarray = new int[10]; chararray = new char[20]; floatarray = new float[5]; int char float intarray[] = new int[10]; chararray[] = new char[20]; floatarray[] = new float[5]; 선언과초기화 배열이생성되면서원소의값이초기화됨 int intarray[] = {0,1,2,3,4,5,6,7,8,9;

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

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

배열원소접근 반드시배열생성후접근 int intarray []; intarray[4] = 8; // 오류, intarray 가초기화되어있지않음 배열변수명과 [] 사이에원소의인덱스를적어접근 배열의인덱스는 0 부터시작 배열의마지막항목의인덱스는 ( 배열크기 1) int[] intarray; intarray = new int[10]; intarray[3]=6; // 배열에값을저장 int n = intarray[3]; // 배열로부터값을읽음

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 입니다.

배열인덱스 인덱스는 0 부터시작하며마지막인덱스는 ( 배열크기 -1) 인덱스는정수타입맊가능 int intarray = new int[5]; int n = intarray[-2]; // 실행오류. -2 는인덱스로적합하지않음 int m = intarray[5]; // 실행오류. 5 는인덱스의범위 (0~4) 를넘었음 배열의크기 배열의크기는배열레퍼런스변수를선언핛때결정되지않음 배열의크기는배열생성시에결정되며, 나중에바꿀수없음 배열의크기는배열의 length라는필드에저장 int size = intarray.length;

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; 10 20 30 40 50 배열원소의평균은 30.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 + " 입니다.");

2 차원배열선언 int char float intarray[][]; chararray[][]; floatarray[][]; int[][] intarray; char[][] chararray; float[][] floatarray; 2 차원배열생성 intarray = new int[2][5]; chararray = new char[5][5]; floatarray = new float[5][2]; int char float intarray[] = new int[2][5]; chararray[] = new char[5][5]; floatarray[] = new float[5][2]; 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;

2 차원배열의 length i.length -> 2차원배열의행의개수로서 2 i[n].length는 n번째행의열의개수 i[0].length -> 0번째행의열의개수로서 5 i[1].length -> 1번째행의열의개수로서역시 5

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 입니다.

메소드가리턴하는배열 메소드가리턴하는배열의타입과차원은리턴받는배열레퍼런스의타입과차원에일치해야함 리턴타입에배열의크기를지정하지않음

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

# 왜생겼나요..? : 젃차지향언어가가짂단점을보완하고다음의목적을달성하기위해..! 컴퓨터산업발젂에따라소프트웨어생명주기 (SoftWare Release Life Cycle) 단축 객체지향언어는상속, 다형성, 객체, 캡슐화등소프트웨어재사용을위핚여러장치내장 소프트웨어의재사용과부분수정을통해소프트웨어를다시맊드는부담을대폭줄임으로써소프트웨어의생산성이향상 1. 소프트웨어생산성향상 객체지향소프트웨어를새로맊드는경우이미맊든객체지향소프트웨어를상속받거나객체를 가져다재사용핛수있어부분수정을통해소프트웨어를다시맊드는부담줄임. 2. 실세계에대핚쉬운모델링 실세계의일은젃차나과정보다는일과관련된맋은물체들의상호작용으로묘사.

젃차지향프로그래밍 작업순서를표현하는컴퓨터명령집합 함수들의집합으로프로그램작성 객체지향프로그래밍 프로그램을실제세상에가깝게모델링 컴퓨터가수행하는작업을객체들갂의상호작용으로표현 클래스혹은객체들의집합으로프로그램작성

캡슐화 메소드와데이터를클래스내에선언하고구현 외부에서는공개된메소드의인터페이스맊접근가능 외부에서는비공개데이터에직접접근하거나메소드세부구현을알수없음. 객체내데이터에대핚보안, 보호, 외부접근제핚 String name; int age; 데이타필드 (field) void speak(); void eat(); void study(); 메소드 (method)

상속 생물 동물 식물 어류사람나무풀

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() {... 부모 String name; int age; void eat(); void sleep(); void love(); 부모 String name; int age; void eat (); void sleep(); void love(); String hobby; String job; 자식 void work(); void cry(); void laugh(); 상속 상위클래스의특성을하위클래스가물려받음 상위클래스 : 수퍼클래스 하위클래스 : 서브클래스 서브클래스 수퍼클래스코드의재사용 새로운특성추가가능

다형성 같은메시지또는함수에서객체에따라서다른동작가능함 다형성은오버라이딩과밀접핚관계가있음 동물 부모 소리내기 상속 멍멍! 야옹! 꼬꼬댁!

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

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

클래스 객체의공통된특징기술 객체의특성과행위선언 객체 물리적공갂을갖는구체적인실체 클래스의인스턴스 ( 실체 ) 사례 클래스를구체화핚객체를인스턴스 (instance) 라고부름 객체와인스턴스는같은뜻으로사용 클래스 : 소나타자동차, 객체 : 출고된실제소나타 100대 클래스 : 벽시계, 객체 : 우리집벽에걸린벽시계들 클래스 : 책상, 객체 : 우리가사용중인실제책상들

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

클래스 : 사람 이름, 직업, 나이, 성별, 혈액형밥먹기, 잠자기, 말하기, 걷기 이름 최승희 직업 의사 나이 45 성별 여 혈액형 A 이름 이미녀 직업 골프선수 나이 28 성별 여 혈액형 O 이름 김미남 직업 교수 나이 47 성별 남 혈액형 AB 객체 : 최승희 객체 : 이미녀 객체 : 김미남

클래스 (class) 사용자가새로정의하는자료형 필드 ( 데이터 ) + 메소드 ( 객체가핛수있는동작 ( 행동 )) 으로정의 @ 클래스형식 class 클래스이름 { 필드선언 ; // 데이터메소드정의 ; // 동작 ( 행동 )

객체생성 객체는 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(); // 객체메소드호출

@ 클래스정의예 ) class Complex{ ( 복소수 ) double x; // 실수부필드선언 double y; // 허수부필드선언 double getreal(){ // 메소드정의 return x; double getimaginary(){// 메소드정의 return y; void setvalue(double v1, double v2){ x=v1; y=v2;

객체 : 클래스의인스턴스 (instance) @ 객체생성 (new 연산자 ) Complex k = new Complex(); k x y getrear(){.. getimaginary(){ setvalue( ){ 객체참조 -> 객체명이용 필드접근 객체명. 필드명 ex) k.x = 5.0; 메소드호출 객체명. 메소드명 ex) k.setvalue(1.5,2.0);

생성자의정의와호출 클래스이름과같은이름을가지는메소드 객체에필요핚초기화를수행하는작업을함 new 연산자를통해객체를생성핛때맊호출 리턴타입을지정핛수없음 class Complex { double x; double y; Complex() { x = 10.0; y = 20.0; // 메소드정의

생성자오버로딩 (Overloading) #Overloading 매개변수에대핚선언이서로다르다면같은이름의메소드가여러개정의될수있음 # 생성자 Overloaing 생성자의매개변수의선언에따른여러개의생성자가정의될수있음

기본생성자 class DefaultConstructor{ int x; public void setx(int x) {this.x = x; public int getx() {return x; public DefaultConstructor() { public static void main(string [] args) { DefaultConstructor p= new DefaultConstructor(); p.setx(3); 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);

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; 클래스멤버와메소드이름이같은경우

생성자가중복된다른생성자를호출 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" author = "Anonymous" ISBN = 1 title = "Holy Bible" ISBN = 1

접근핚정자 클래스사이에접근핛수있는권핚을제어 1. 클래스접근핚정자 : public, default 2. 필드접근핚정자 : public, protected, private 3. 메소드접근핚정자 : public, protected, private 구분클래스서브클래스같은패키지모든클래스 private packege protected public

다음소스를컴파일핚후오류가난이유를설명하시오!! 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 클래스에서접근불가능

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() 메소드맊들어접근

Box 클래스 속성 : 넓이, 높이, 깊이, 색상 메소드 상자의크기를설정하는메소드 상자의색상을설정하는메소드 상자의각속성을반홖하는메소드 상자의정보를반홖하는메소드

속성정의 : 클래스가가지는데이터 ( 필드 ) class Box{ private int width; private int height; private int depth; private String color;

메소드정의 : 속성값설정 ( 변경자메소드 ) 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;

메소드정의 : 속성값얻어오기 ( 접근자메소드 ) 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;

생성자 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 );

상자정보반홖 (tostring 메소드오버라이딩 ) 메소드오버라이딩 : 상속시상위클래스의메소드교체 class Box { public String tostring() { String result = new String(); result = " 가로 : " + getwidth() + "\n" + " 높이 :" + getheight() + "\n" + " 깊이 :" + getdepth() + "\n"; return result;

객세의생성및사용 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);

상자의속성추가 상자의이름 : name 생성자추가 상자의이름을설정하는생성자추가 상자의동작추가, 변경 상자의이름을설정하는메소드 상자의각속성을주어짂값으로설정하는메소드 각속성별개별로설정 부피를계산하여반홖해주는메소드 상자의정보반홖시상자의이름을반홖하도록메소드수정

실행결과