제1장 자바 언어 소개

Size: px
Start display at page:

Download "제1장 자바 언어 소개"

Transcription

1 프로그래머를위한 Java 2 제3장객체지향프로그래밍

2 Software Components 2 Programs are easier to construct and modify they are made up of separate components A software component can be thought of any program element that transforms input into output Input Component Output Compute average 22

3 Software Components 3 Components can be combined to make larger components

4 Object-Oriented Oriented Programming 4 Java is object-oriented language Programs are made from software components called objects Initially, we can think of an object as data for it and a collection of services Object contains data and methods to provide the service

5 Object-Oriented Oriented Programming 5 Class A class represents a concept An object is defined by a class Multiple objects can be created from the same class

6 Object-Oriented Oriented Programming 6 A class represents a concept and an object represents the realization of that concept Objects Class My first car Car John's car Dad's car

7 3.1.1 객체와클래스개념 7 용어정리 객체 (object) 실세계혹은인간의생각속에존재하는사물혹은개념 추상화 (abstraction) 객체들의공통된특성을파악하고, 불필요한특성을제거하는과정 클래스 (class) 추상화를통해서객체들의공통된사항을모아놓은것 멤버필드 ( 속성 ) 클래스의특성중에서변수혹은값으로표현할수있는것 메소드 ( 멤버함수, 행위 ) 클래스의특성중에서함수로표현할수있는것 캡슐화 (encapsulation) 클래스의특성을외부에서접근하지못하도록한것

8 3.1 객체지향개념 8 정보은폐 멤버필드와메소드를클래스의외부에서는접근하지못하도록하는기능 상속 새로운클래스를정의할때, 이미존재하는클래스를바탕으로 필요한속성만추가하여작성하는방법 서브클래스 상속을통해새로정의되는클래스 슈퍼클래스 상속에서바탕이되는클래스

9 3.1.1 객체와클래스개념 9 추상화

10 3.1 객체지향개념 10 객체지향프로그래밍의장점 생산성향성 객체를하드웨어의 IC 처럼재사용 자연적인모델링 보통사람들의생각을프로그래밍언어로표현 재사용 상속성, 클래스통합을통한코드재상용의극대화 유지보수의용이성 함수수정에있어주변에미치는영향이최소화됨

11 3.1.1 객체와클래스개념 11 실세계객체와프로그램세계의클래스

12 3.1.1 객체와클래스개념 12 프로그램세계에서클래스와객체 객체 Object = Data + Methods Object = 클래스의인스턴스 (an instance of a class) 클래스 Class = 객체의타입 (description of a type of Object) 프로그램 Program = 서로협력하는객체들의집합 (a set of Objects invoking each other Methods)

13 실세계의객체와컴퓨터상의객체 13

14 3.1.1 객체와클래스개념 (Message Passing) 14 메시지패싱 Driver Car car; Car 클래스객체페달 페달을밟았다. 힘좀더내봐 운전자 엔진 객체 Car pedal push(){ } Engine engine; Pedal pedal; Wheel wheel; engine.powerup(); car.pedal.push() engine powerup(){ 객체바퀴 빨리돌아라 wheel speedup(){ } } wheel.speedup()

15 객체간의의사소통 : 메시지패싱 15 실세계에서메시지패싱 운전자 Car 클래스객체페달객체바퀴 페달을밟았다. 힘좀더내봐 빨리돌아라 엔진 객체

16 객체간의의사소통 : 메시지패싱 16 자바언어에서메시지패싱 메시지패싱방법을사용 대부분의프로그래밍언어에서는함수호출을이용 Driver Car car; Car car.pedal.push() Engine engine; Pedal pedal; Wheel wheel; pedal push(){ } engine.powerup(); wheel speedup(){ } engine powerup(){ } wheel.speedup()

17 3.1.2 클래스와객체만들기 17 추상화관점

18 3.1.2 클래스와객체만들기 정의단계 클래스 -> 틀, 자료형 클래스를정의할때사물 ( 객체, 물건 ) 의중요하고필요하다고판단되는 특성과기능만추출해서표현한다. 2. 생성 ( 실체화 ) 단계 new 라는명령어를사용, new 다음에클래스이름과같은함수기술이때만들어진실체 ( 객체 ) 는변수에저장되고, 변수의타입은실체의종류가될것이다. 예 : Pen mypen = new Pen(); 3. 사용단계 변수에점 (.) 을이용하여프로그램에서생성된객체를사용한다. 예 : mypen.write();

19 3.1.2 클래스와객체만들기 19 프로그램에서클래스를정의하고사용하는단계 1. 공장 ( 생산라인 ) 을만든다. 2. 물건을만든다. 3. 물건을이용 ( 사용 ) 한다. 특성중요한추출기능 프로그램으로표현 class Pen { String color; int price; mypen.write(); Pen mypen = new Pen(); } void write() { System.out.println("Hello"); }

20 3.1.2 클래스와객체만들기 20 예제 : Pen.java 예제 : PenUser.java 1 class Pen { 2 String color; 3 int price; 4 5 void write() { 6 System.out.println("Hello"); 1 class PenUser { 2 public static void main(string args[]) { 3 Pen mypen = new Pen(); 4 mypen.write(); 5 } 6 } 7 } 8 } -Method Invocation -Message passing 결과 C:\> java PenUser Hello

21 3.1.3 레퍼런스타입 21 레퍼런스와포인터

22 3.1.3 레퍼런스타입 22 객체생성방법 (C++ vs. Java)

23 3.1.3 레퍼런스타입 23 메모리영역 1 int a = 100 ; 2 Car mycar; 3 mycar = new Car(); 4 Car yourcar = mycar;

24 3.2 자바클래스 24 자바클래스작성문법 [ classmodifier ] class name [ <typeparameter> ] [ extends name ] [ implements name [, name ] ] { [[ constructormodifier ] name ( argumentlist ) [ throws name [, name ] ] { } ] [ fieldmodifier ] type name [ = initialvalue ] ; } [ methodmodifier ] [ <typeparameter> ] returntype name ( argumentlist ) [ throws name [, name ] ] { }

25 3.2 자바클래스 25 모디파이어종류

26 3.2 자바클래스 26 예제 : Circle1.java 1 class Circle { 2 protected int r; 3 4 public double getcircumference() { 5 return 3.14*2*r; 6 } 7 8 public double getarea() { 9 return 3.14*r*r; 10 } public int getradius() { 13 return r; 14 } public void setradius(int r) { 17 this.r = r;..

27 3.2 자바클래스 27 예제 : CircleUser1.java 1 class CircleUser { 2 public static void main(string args[]) { 3 Circle c = new Circle(); 4 c.setradius(7); 5 System.out.println(" 원둘레 :"+ c.getcircumference()); 6 System.out.println(" 원면적 :"+ c.getarea()); 결과 C:\> java CircleUser 원둘레 :43.96 원면적 :153.86

28 3.3.1 생성자 28 생성자 클래스이름과동일한이름을갖는함수 생성자의리턴타입은기술하지않음 역할 - 멤버필드의초기화 생성자가없는클래스는디폴트생성자를가지고있다

29 3.3.1 생성자 29 예제 : Circle2.java 1 class Circle { 8 public Circle(int r) { 9 this.r = r; 10 } 예제 : CircleUser2.java 1 class CircleUser { 2 public static void main(string args[]) { 3 Circle c = new Circle(7); 4 System.out.println(" 원둘레 :"+ c.getcircumference()); 5 System.out.println(" 원면적 :"+ c.getarea());

30 3.3.2 this 30 this 클래스내에서자기자신을가리키는레퍼런스 static으로선언된메소드에서는사용될수없다. 두가지목적으로사용 자기자신의멤버필드나메소드를명확히지시하기위해서사용 객체전체를함수의매개변수로전달해야하는경우에사용 예제 : This.java 9 void a (int a) { 10 this.a = a; 11 b.dojob(this); 12 } 13 }

31 3.3.3 this() 31 this( ) 생성자에서사용되는 this() 는클래스의다른생성자를호출 생성자가많은경우매개변수에의해생성자가구분 생성자에서 this() 는맨처음부분에나와야한다. 예제 : Circle3.java 4 public Circle() { 5 this(0); 6 } 8 public Circle(int r) { 9 this.r = r; 10 }

32 3.3.5 패키지와 import 32 패키지 (package) 유사한클래스들의모임 package 문장기술 특징 package package_name ; package 문장을사용하지않는경우에는디폴트패키지에속하게된다. 패키지내에서클래스들은서로자유롭게다른클래스들을참조 다른패키지의클래스를사용하기위해서는 import 문을사용 import package_name.class_name ; 패키지경로는클래스파일의디렉토리경로와같다. 예 ) java.awt.graphics --> java/awt/graphics import 문장을사용하지않고다른패키지의클래스를참조하기위해서는패키지이름과클래스이름을같이사용 예 ) java.awt.graphics g ;

33 3.3.5 패키지와 import 33 예제 : ColorPen.java 1 package com.coding_free.java2; 2 3 public class ColorPen { 4 private String color; 5 private int price; 저장및컴파일 저장 C:\java2\src\ch3\com\coding_free\java2 컴파일 C:\> javac -d. com/coding_free/java2/colorpen.java

34 3.3.5 패키지와 import 34 예제 : ColorPenUsre.java 1 package penna; 2 3 import com.coding_free.java2.*; 4 5 class ColorPenUser { 6 public static void main(string args[]) { 7 ColorPen mypen = new ColorPen(); 저장, 컴파일및실행 저장 : C:\java2\src\ch3\penna 컴파일 : C:\> javac -d. penna/colorpenuser.java 실행 : C:\> java penna.colorpenuser

35 3.3.5 패키지와 import 35 Static import 클래스의 static 멤버필드와메소드를임포트할수있는기능 형태 import static TypeName.Identifier ; import static TypeName.* ; 예제 : StaticImportTest.java 1 import static java.lang.system.*; 2 3 public class StaticImportTest { 4 public static void main(string args[]) { 5 out.println("hello World");

36 3.4 public 클래스 36 public 클래스의의미 public으로선언된경우 같은패키지내에서자유롭게사용. 다른패키지에서도자유롭게사용. public 으로선언되지않은경우 같은패키지내에서는자유롭게사용 다른패키지에서접근시에러가발생

37 3.5 가시성 37 가시성 멤버필드와메소드에적용 가시성종류 public 클래스내외어느곳에서나접근이가능 protected 같은패키지내에있는클래스들은모두접근가능 다른패키지의클래스들은이클래스로부터상속받은경우에만접근 가능 package 아무것도기술하지않음 같은패키지내에서는자유롭게접근할수있으나, 패키지외부에서는접근할수없음 private 클래스내부에서만접근가능

38 3.5 가시성 38 동일패키지 외부패키지 package class class package class class X class 상속 O O X O protected public private default 상속 O O X O class class O O 상속 X X protected public private default 상속 O X X class class class

39 3.6 transient, volatile 필드 transient 필드 멤버필드가객체의영속적인상태에일부분으로포함되지않는다 예 ) 다음의 Point 클래스가시스템서비스에의해영속적인메모리에 저장될때 transient 부분을제외한 x, y 부분만저장됨을의미한다. class Point { int x, y; transient float rho, theta; } transient 는현재까지세부적인내용은결정되지않았고, 앞으로세부적인사항들이결정될예정

40 3.6 transient, volatile 필드 volatile 필드 쓰레드간에공유되는데이터의일관성유지를위해사용 volatile 로선언된변수는일관성을유지하면서내용이업데이트됨 volatile 로선언된변수의내용을변경하는경우에는락 (lock) 이걸린다고볼수있다. 예 : class Test { static volatile int i = 0, j = 0; static void one() { i++; j++; } static void two() { System.out.println("i=" + i + " j=" + j);.. i, j 변수에 volatile 을선언하는것은 i, j 값을변경하는 one(), two() 메소드에 synchronized 를선언하는것과같은효과를가져온다.

41 3.7 오버로딩 (overloading) 41 오버로딩 ad-hoc polymorphism이라고도함 동일한연산자가자료의타입에따라다른작업을수행하는것 함수오버로딩 동일한이름을가지는함수가여러개존재가능 내부적으로는다른작업을하더라도의미면에서같다면동일한함수이름을사용 한클래스내에서함수이름은동일, 함수의매개변수는달라야함 함수시그내쳐 = 함수이름 + 매개변수개수 + 매개변수타입

42 3.7 오버로딩 (overloading) 42 함수의이름은같아도시그니쳐 (signiture) 는달라야한다. 시그니쳐 (signiture) - 함수이름, 아규먼트의수, 아규먼트의타입 동일한함수이름을사용하면컴파일러가시그니쳐를이용해서다른이름으로변경해서컴파일 함수이름이동일하고시그니쳐도동일하다면컴파일에러발생 함수의리턴타입은시그니쳐에포함되지않음 예제 : Overloading.java 한클래스내에서함수이름은동일하지만, 함수의아규먼트 ( 아규먼트의수, 아규먼트의타입 ) 가다른경우

43 3.7 오버로딩 (overloading) 43 예제 : Overloading.java 1 class Overloading { 2 public void say() { 3 System.out.println("Hello?"); 4 } 6 public void say(string msg) { 7 System.out.println(msg); 8 } 10 public void say(string msg, int n) { 11 for(int i =0; i < n; i++) { 12 System.out.println(msg); 13 } 14 } 16 public static void main(string args[]) { 17 Overloading a = new Overloading(); 18 a.say(); 19 a.say("how are you?"); 20 a.say("i am fine.", 3);...

44 3.7 오버로딩 (overloading) 44 폴리모피즘 동일한내용이다른타입에적용가능 기원 함수형언어에서시작됨 예 : 리스트의크기를알아보는 length 함수는리스트내부의데이터타입에관계없이적용되고, Int 타입의값을리턴한다. length :: [a] -> Int // Hakell 언어문법 종류 Parametric polymorphism 데이터타입과무관하게동일한코드로작동 코드재사용 함수형언어의폴리모피즘 자바의제네릭프로그래밍, C++ 의 template Ad-hoc polymorphism 데이터타입에따라다른코드가수행 문법재사용 연산자혹은함수오버로딩

45 4.1 상속 45 상속 기존에있는클래스를바탕으로다른특성을추가해새로운클래스를생성 서브클래스 (subclass), 파생클래스 (derived class), 자식클래스 (child class) 슈퍼클래스 (superclass), 베이스클래스 (baseclass), 부모클래스 (parent class) is - a 관계 "Human is an animal." 에서 human 과 animal 과의관계 human 은 animal 에속하면서 animal 의모든속성을상속받음 is - a 가성립하는경우에상속이가능하다. 서브클래스는슈퍼클래스의서브타입 (subtype) 자바에서는상속을위해서 extends 라는키워드를사용 자바는단일상속 (single inheritance) 만지원 하나의슈퍼클래스로부터상속받음 cf) 다중상속 C++

46 4.1.1 상속 46 사원과관리자의예 Employee 클래스 멤버필드 : 이름, 사번, 직책, 월급 메소드 : 일하다 Manager 클래스 멤버필드 : 이름, 사번, 직책, 월급, 부서 메소드 : 일하다

47 4.1.1 상속 47 Employee와 Manager의관계 is-a 관계 A manager is an employee. 상속관계 Employee : 슈퍼클래스, 부모클래스 Manager : 서브클래스, 자식클래스 자바에서상속 extends 키워드사용

48 4.1.1 상속 48 예제 : Employee.java 1 class Employee { 2 protected String name; 3 protected String idnum; 7 public Employee(String name, String idnum) { 8 this.name = name; 9 this.idnum = idnum; 20 public void work() { 21 System.out.println(" temployee ""+name + " " does his best."); 22 }

49 4.1.1 상속 49 예제 : Manager.java 1 class Manager extends Employee { 2 String dept; 4 public Manager(String name, String idnum, String dept) { 5 super(name, idnum); 6 this.dept = dept; 7 } 8 9 public void work() { 10 System.out.println("Manager ""+name + 11 " " works hard with his subordinates in "+dept+ dept."); 12 }

50 4.1.1 상속 50 예제 : Company.java 7 jmchoi = new Manager( Yoon Yong", "F99847", "Finance"); 10 lee = new Employee("lee", "F94732"); 12 employees = new Employee[4]; 13 employees[0] = yiyoon; 14 employees[1] = sblim; 19 public void makemoney() { 20 int n = employees.length; 21 for(int i=0; i < n; i++) { 22 employees[i].work(); 23 }

51 4.1.2 super 와 super() 51 super super는슈퍼클래스를지칭하는레퍼런스로사용 상위클래스의멤버필드나메소드를지칭할때사용 super.attribute super.method() static으로선언된메소드에서는사용될수없다. super() super() 는슈퍼클래스의생성자를호출 super() 는생성자의맨처음부분에위치 자식클래스의생성자는슈퍼클래스의생성자를호출해야한다. 슈퍼클래스의생성자를호출하지않는경우에는내부에서자동적으로슈퍼클래스의디폴트생성자가호출

52 4.1.3 오버라이딩 52 오버라이딩 (overriding) 클래스의상속관계에서발생 슈퍼클래스에있는메소드를서브클래스에서다른작업을하도록서브클래스에서동일한 함수이름으로재정의 cf) 오버로딩 (overloading) static 으로선언한클래스메소드에서는오버라이딩되지않는다. 예외상황을발생시킬수있는메소드는오버라이딩할수없다. 예 class Employee { public void work() { System.out.println(" temployee ""+name +."); } } class Manager extends Employee { public void work() { System.out.println("Manager ""+name + "...");

53 4.1.4 상속, 오버라이딩, 우버쉐도우 53 예제 : A.java 2 int a = 10; 4 void b() { 5 System.out.println("A"); 예제 : AA.java 1 class AA extends A { 2 int a = 20; 3 void b() 4 System.out.println("AA"); 5 6 void c() { 7 System.out.println("C");

54 4.1.4 상속, 오버라이딩, 우버쉐도우 54 메모리구조 A z b() AA void b() {..("A") } a c() 10 void b() {..("AA") } a 20 void c() {..("C") }

55 4.1.4 상속, 오버라이딩, 우버쉐도우 55 예제 : XYZ.java msg 출력

56 4.1.4 상속, 오버라이딩, 우버쉐도우 56 예제 : XYZ.java 40 Z z = new Z(); 41 Y y = z; 42 X x = z; 43 z.print(); 44 y.print(); 45 super.print(); 46 play(); 47 super.play(); 48 // y.doz(); 49 // super.super.print();

57 4.1.4 상속, 오버라이딩, 우버쉐도우 57 예제 : XYZ.java( 계속 ) 51 System.out.println(" ni ="+ i); 52 System.out.println("this.i = "+ this.i); 53 System.out.println("super.i = "+ super.i); 54 System.out.println("y.i = "+ y.i); 55 System.out.println("x.i = "+ x.i); 56 System.out.println("((Y)this).i = "+ ((Y)this).i); 57 System.out.println("((X)this).i = "+ ((X)this).i); 58 // super.super.i = 10;

58 4.1.4 상속, 오버라이딩, 우버쉐도우 58 결과 : XYZ.java C: > java Z I am a Z. I am a Z. I am an Y. Play..I am a Z. Play..I am an X. i =15 this.i = 30 super.i = 20 y.i = 20 x.i = 10 ((Y)this).i = 20 ((X)this).i = 10

59 4.1.4 상속, 오버라이딩, 오버쉐도우 59 오버라이딩 (overriding) 주의사항 가시성은커지는방향으로 예외 throws 문제 리턴타입이다른경우 오버쉐도우 (overshadow) 동일한이름의멤버필드가슈퍼클래스와서브클래스에있을때 오버쉐도우된멤버필드는 super 레퍼런스를이용하거나, 서브클래스를슈퍼클래스로형변환해서접근할수있다.

60 PolyMorphism 60 Poly : 많다는뜻의접두어 Morphism : 형태라는뜻 Polymorphism : 형태가많다는뜻 의미 (Semantics) 는하나지만실제형태는여러가지가될수있음. 예 ) 밥을먹다 : 누가밥을먹는가에다양한형태가존재 객체지향프로그래밍에서 polymorphism 의지원형태 Overloading Overriding

61 4.2.1 클래스에서형변환 61 슈퍼타입과슈퍼클래스 슈퍼타입 슈퍼클래스 같은개념은아니지만, 자바 /C++ 등의언어에서는같다고보아도무방함 예

62 4.2.1 클래스에서형변환 62 예제 : ReferenceCast.java 9 animal1 = new Animal(); 10 mammal1 = new Mammal(); 11 ape1 = new Ape(); 12 human1 = new Human(); // human2 = ape1; // 컴파일에러 15 // human2 = mammal1; // 컴파일에러 16 // human2 = (Human) mammal1; // 컴파일 OK, 실행시에러 mammal2 = human1; // OK 19 // human2 = mammal2; // 컴파일에러 20 human2 = (Human) mammal2; // OK 21 // ape2 = (Ape) mammal2; // 컴파일 OK, 실행시에러 22 // ape2 = (Ape) animal1; // 컴파일 OK, 실행시에러

63 4.2.2 static 메소드숨김 63 static 메소드숨김 부모클래스에서정의한 static 메소드를자식클래스에서다시정의하는경우 부모클래스의메소드는숨겨져서보이지않음 자식클래스를부모클래스로타입변경하면, 부모클래스의메소드를사용할수있음 예 : MethodHiding.java 1 class Super { 2 static String greeting() { return "Goodnight"; } 3 String name() { return "Richard"; } 4 } 6 class Sub extends Super { 7 static String greeting() { return "Hello"; } 8 String name() { return "Dick"; }

64 4.3 인터페이스 64 인터페이스 자바에서서브타입을지원하기위해서만든개념 모든메소드가헤더만갖고있고, 바디는없음 형태 [ interfacemodifier ] interface name [ extends name ] { [ interfacefieldmodifier ] type name; [ interfacemethodmodifier ] returntype name ( argumentlist ) ; 인터페이스를구현하는클래스는 implements 키워드사용 }

65 4.3.1 인터페이스기초 65 인터페이스와추상클래스 추상클래스는클래스의메소드와멤버필드의일부분은구현, cf) 인터페이스는전혀구현되어있지않음 추상클래스를이용하는경우에는단일상속만지원 cf) 인터페이스는다중상속 (multiple inheritance) 을할수있음 인테페이스를구현하기위해서 implements 라는키워드를사용 인터페이스를구현하는것도서브타입 (subtype) 을만드는것임

66 4.3.1 인터페이스기초 66 예 )DrawableCircle

67 4.3.1 인터페이스기초 67 인터페이스사용예

68 4.3.1 인터페이스 (interface) 68 예제 : Drawable.java 1 import java.awt.graphics; 2 3 interface Drawable { 4 void paint(graphics g); 5 } 예제 : DrawableCircle.java 1 import java.awt.*; 2 3 class DrawableCircle extends Circle implements Drawable { 4 protected int x, y; 16 public void paint(graphics g) { 17 g.drawoval(x-r, y-r, 2*r, 2*r); 18 } 19 }

69 4.3.1 인터페이스 (interface) 69 예제 : DrawApplet.java 1 import java.awt.*; 2 import java.applet.*; 3 4 public class DrawApplet extends Applet { 5 Drawable drawable[]; 6 7 public void init() { 8 drawable = new Drawable[3]; 9 drawable[0] = new DrawableCircle(45, 45, 30); 10 drawable[1] = new DrawableRectangle(25, 25, 40, 65); 11 drawable[2] = new DrawableCircle(90, 70, 60); 12 } public void paint(graphics g) { 15 int n = drawable.length; 16 for(int i=0; i< n; i++) { 17 drawable[i].paint(g); 18 }..

70 4.3.2 인터페이스특성 70 인터페이스특성 인터페이스의멤버필드는디폴드로 static, final 로선언 따라서인터페이스의멤버필드의값을변경하려는시도는컴파일시에에러를발생 인터페이스구현 서브타입 여러개의인터페이스를구현하는경우 콤마를이용해서기술 인터페이스의임플리멘츠도상속과같은개념 인터페이스를임플리멘츠한서브클래스는인터페이스의멤버필드를상속받아서사용할수있다. 인터페이스의상속 extends 키워드사용 interface ScaledDrawable extends Drawable{..}

71 4.4 static 과 final 의의미 71 final 클래스 그클래스는더이상상속을통해서재사용할수없음 final 클래스를상속받으려는클래스는컴파일시에에러가발생 클래스앞에 final 키워드사용 public final class FinalClass{. } final 메소드 final 이메소드에선언된경우, 오버라이딩이불가능 메소드앞에 final 키워드사용 public final void print(){. } final 멤버필드 값을변경할수없는상수의의미 final 멤버필드는값을초기화만할수있고, 새로이값을할당할수는없음 멤버필드앞에 final 키워드사용 public final int a = 10;

72 4.4 static 과 final 의의미 72 static 멤버필드 객체들간의전역변수처럼사용됨 클래스이름으로접근한다. (ex : Color.red) 멤버필드앞에 static 키워드사용 static int a = 3; static 메소드 혹은클래스메소드라고도함 인스턴스가아닌클래스이름으로메소드호출 ex : Math.abs(-10); 메소드앞에 static 키워드사용 public final static void sayhello(string arg){. } 주의 this, super 를사용할수없음 static 이아닌멤버필드는접근할수없음

73 4.4 static 과 final 의의미 73 static 초기화 클래스내에서 static 키워드를이용해서초기화루틴을사용할수있음 static 초기화는클래스가초기화될때수행 대표적인 static 초기화의예는네이티브메소드에서라이브러리를로드 static { System.loadLibrary("hello"); } 자바클래스에서멤버필드나메소드의위치는크게중요하지않았음 그러나 static 초기화에서는변수의위치는중요 뒤에선언된변수나함수를앞에서레퍼런스해서사용할수없음 예제 : BadStaticInitial.java 1 class BadStaticInitial { 2 static int i = j + 2; 3 static int j = 4; 4 }

74 5.1 내부클래스 (Inner Class) 74 내부클래스 클래스내부에정의된클래스 외부클래스의멤버필드와메소드에자유롭게접근가능 종류 내재된 (Nested) 톱레벨클래스 / 인터페이스 클래스나인터페이스가 static으로선언된경우 패키지의멤버 다른클래스에서사용될수있음 멤버클래스 클래스의멤버로정의됨 지역클래스 메소드내부에서정의됨 무명클래스 메소드내부에서정의됨

75 5.1.1 내재된톱레벨클래스 / 인터페이스 75 내재된 (Nested) 톱레벨클래스 / 인테페이스 다른클래스에포함되면서클래스나인테페이스가 static 으로선언된경우 다른톱레벨클래스와같이패키지의멤버이다. LinkedList 클래스에내재된인터페이스 Linkable 이있다면, Linkable 인터페이스는 LinkedList.Linkable 로접근할수있다. 예제 : LinkedList.java 1 public class LinkedList { 2 protected Linkable head; 3 4 public LinkedList() { 5 head = null; 6 } public interface Linkable { 13 public Linkable getnext(); 14 } 15 }

76 5.1.1 내재된톱레벨클래스 / 인터페이스 76 예제 : LinkableNode.java 3 public class LinkableNode implements LinkedList.Linkable {... 4 protected Object value; 5 protected LinkedList.Linkable next; 12 public LinkedList.Linkable next() { 13 return next; 14 } public void next(linkedlist.linkable node) { 17 next = node; 18 }

77 5.2 멤버클래스 77 멤버클래스 클래스의멤버로 Inner 클래스가선언된경우이다. static 으로선언되지않는다. 자신을포함하는클래스의멤버필드와메소드들을자유롭게접근 예제 : DrawRecD.java.. 5 public class DrawRecD extends Applet { 6 int startx, starty, w, h;. 21 public class MouseMotionHandler extends MouseMotionAdapter { 22 public void mousedragged(mouseevent e) { 23 w = Math.abs(startX - e.getx()); 24 h = Math.abs(startY - e.gety()); 25 repaint(); 26 } 27 }.

78 5.3 지역클래스 78 지역클래스 메소드내부에정의된클래스 : 자바코드의블락 ({ }) 안에서정의된 Inner 클래스 지역변수의특성과유사하다. 멤버클래스는아니지만, 포함하는클래스의멤버필드와메소드를접근 예제 : SomeApplication.java.. 4 public class SomeApplication extends Frame { 5 public static final int EXIT = 0;.. 23 MenuItem createmenuitem(string label, char shortcut, final int command) { 24 MenuItem item = new MenuItem(label, new MenuShortcut(shortcut)); class MenuItemHandler implements ActionListener { 27 public void actionperformed(actionevent e) { 28 docommand(command); 29 } 30 } item.addactionlistener(new MenuItemHandler()); 33 return item; 34 }.

79 5.3 무명클래스 79 무명클래스 지역클래스의개념을확장 클래스정의와사용의 2 단계를 1 단계로결합 이름을갖지않고한번만사용 예제 : DrawRecD2.java. 8 public void init() { 9 addmouselistener(new MouseAdapter() { 10 public void mousepressed(mouseevent e) { 11 startx = e.getx(); 12 starty = e.gety(); 13 } public void mousereleased(mouseevent e) { 16 w = Math.abs(startX - e.getx()); 17 h = Math.abs(startY - e.gety()); 18 repaint(); 19 } 20 } );

80 5.4 자바에서중요한클래스 Object 클래스 모든자바클래스의슈퍼클래스 extends Object 를쓰지않아도자동적으로상속 Object 클래스들의메소드 protected Object clone() 객체를복사하는데사용된다. public boolean equals(object obj) 두객체의내용이동일한지알아볼때사용되는메소드 public int hashcode() 객체를위한해쉬코드를리턴 해쉬코드는자바시스템에서객체를유일하게식별하는정수값

81 5.4 자바에서중요한클래스 81 데이터타입클래스

82 5.4. 자바에서중요한클래스 82 Boolean 클래스 Boolean 클래스는 boolean 기본타입을표현하기위한클래스 Boolean(boolean value), Boolean(String s) 두형태의생성자를가짐 두번째생성자의아규먼트 s는 "true" 문자열과동일하면 true 값을갖고, 다른경우에는 false 값을갖는다. Boolean 클래스로부터기본타입 boolean 값을얻기위해서는 booleanvalue() 메소드를이용

83 5.4. 자바에서중요한클래스 83 Byte 클래스 byte 기본자료타입을표현하기위해 JDK 1.1 이후에제공되는클래스 Byte(byte value), Byte(String s) 두형태의생성자를갖는다두번째생성자의아규먼트는문자열을 10진수의바이트값로변환하면서문자열의포맷이틀린경우에는 NumberFormatException 예외가발생 메소드 public static byte parsebyte(string s) 문자열을 byte 값으로변환하는메소드 public static byte parsebyte(string s, int radix) 문자열을 radix 에따라 10 진수, 2 진수등의 byte 값으로변환하는메소드 public byte bytevalue() 10 진수 byte 값을리턴하는메소드

84 5.4. 자바에서중요한클래스 84 Character 클래스 Character(char value) 형태의생성자를이용해서 char 기본타입을 나타내기위한클래스로사용 메소드 public char charvalue() public static boolean islowercase(char ch) public static boolean isuppercase(char ch) public static boolean isdigit(char ch) public static boolean isletter(char ch) public static boolean isletterordigit(char ch) public static char tolowercase(char ch) public static char touppercase(char ch) public static boolean iswhitespace(char ch)

85 5.4. 자바에서중요한클래스 85 Double 클래스 Double 클래스는 double 기본자료형을클래스로표현하기위해만들어진클래스로 Double(double value), Double(String s) 두형태의생성자 멤버필드 public static final double MAX_VALUE - double 형이갖을수있는최대값 public static final double MIN_VALUE - double 형이갖을수있는최소값 public static final double NaN - double 형에서숫자가아님을표현하기위해사용되는값 public static final double NEGATIVE_INFINITY - double 형의음의무한대값 public static final double POSITIVE_INFINITY - double 형의양의무한대값 메소드 public static boolean isnan(double v) - double 형이의미있는숫자가아닌지여부를알아보는메소드 public static boolean isinfinite(double v) public boolean isnan() - 의미있는숫자가아닌지여부를알아보는메소드

86 5.4. 자바에서중요한클래스 86 Double 클래스의값을각기본자료형의값으로변경하는데 사용되는메소드 public byte bytevalue() public short shortvalue() public int public long public float public double intvalue() longvalue() floatvalue() doublevalue()

87 5.4. 자바에서중요한클래스 87 Float 클래스 float 기본자료형을클래스로표현하기위해사용되는클래스 생성자 public Float(float value) public Float(double value) public Float(String s) 멤버필드 public static final float MAX_VALUE public static final float MIN_VALUE public static final float NaN public static final float NEGATIVE_INFINITY public static final float POSITIVE_INFINITY

88 5.4. 자바에서중요한클래스 88 메소드 public static boolean isnan(float v) public static boolean isinfinite(float v) public boolean isnan() Float 클래스의값을각기본자료형의값으로변환하는메소드 public byte bytevalue() public short shortvalue() public int intvalue() public long longvalue() public float floatvalue() public double doublevalue()

89 5.4. 자바에서중요한클래스 89 Integer 클래스 int 기본자료형을표현하기위한클래스 Integer 클래스는 Integer(int value), Integer(String s) 두개의생성자 멤버필드 public static final int MAX_VALUE public static final int MIN_VALUE 메소드 public static int parseint(string s) - 문자열을 10 진수의정수로변환 public static int parseint(string s, int radix) public byte public short public int public long public float public double bytevalue() shortvalue() intvalue() longvalue() floatvalue() doublevalue() - 문자열을 radix 로기술한진법의정수로변환

90 5.4. 자바에서중요한클래스 90 Short 클래스 short 기본자료형을표현하기위한클래스 Short 클래스는 Short(short value), Short(String s) 두개의생성자 멤버필드 public static final short MAX_VALUE public static final short MIN_VALUE 메소드 public static int parseshort(string s) public static int parseshort(string s, int radix) public byte bytevalue() public short shortvalue() public int intvalue() public long longvalue() public float floatvalue() public double doublevalue()

91 5.4. 자바에서중요한클래스 91 Math 클래스 수학함수와이에필요한상수들로구성 Math 클래스의모든메소드들은 static으로정의되어있기때문에프로그램내에서 Math 클래스의인스턴스를만들지않고 Math.method_name() 형태로메소드를호출해서사용할수있다. 멤버필드 public static final double E public static final double PI

92 5.4. 자바에서중요한클래스 92 멤버필드 public static type abs(type value) - 아규먼트 value 의절대값을리턴한다. public static type max(type a, type b) - a 와 b 중에서큰값을리턴한다. public static type min(type a, type b) - a 와 b 중에서작은값을리턴한다. public static double log(double a) - 자연로그 lna 값을리턴한다. public static double pow(double a, double b) -ab값을리턴한다. public static double sin(double a) - sin(a) 값을리턴한다. a는라디안값이다. public static double sqrt(double a) - a의제곱근값을리턴한다. public static double random() ~ 1.0 사이의임의의값을리턴한다.

93 5.4. 자바에서중요한클래스 93 예제 : MathDemo.java 1 public class MathDemo { 2 public static void main(string args[]) { 3 int a, b; 4 if(args.length == 0) { 5 a = 2; 6 b = 3; 7 } else { 8 a = Integer.parseInt(args[0]); 9 b = Integer.parseInt(args[1]); 10 } 11 System.out.println("pow("+a + ", "+b+") =>" + Math.pow(a,b)); 12 } 13 } 결과 % java MathDemo 4 5 pow(4, 5) =>1024.0

94 5.4. 자바에서중요한클래스 94 String 클래스 문자열을나타내기위해사용 생성자 public String() public String(String value) public String(char[] value) public String(char[] value, int offset, int count) public String(bytes[] value)

95 5.4. 자바에서중요한클래스 95 메소드 public char charat(int index) public boolean endswith(string suffix) public int indexof(char ch) public int lastindexof(char ch) public int length(char ch) public String replace(char old, char new) public String substring(int beginindex) public String substring(int beginindex, int endindex) public String tolowercase() public String touppercase() public String trim()

96 5.4. 자바에서중요한클래스 96 예제 : StringDemo.java 1 public class StringDemo { 2 public static void main(string args[]) { 3 String msg = "How are you?"; 4 String greeting = new String(msg); 5 6 if(msg == greeting) { 7 System.out.println("msg == greeting"); 8 }else if(msg.equals(greeting)) { 9 System.out.println("msg equals greeting"); 10 } 11 System.out.println("original msg: " + msg); 12 msg = msg.replace(' ',''); 13 System.out.println("changed msg: " + msg); 14 } 15 }

97 5.4. 자바에서중요한클래스 97 Vector 클래스 Vector 는크기가동적인배열로볼수있다. java.util 패키지에속해있다. 생성자 public Vector() - 빈벡터를생성한다. public Vector(int initialcapacity) - 초기벡터의크기를 initialcapacity 로만든다. public Vector(int initialcapacity, int capacityincrement) - 초기벡터의크기를 initialcapacity 로만들고, 부족할때마다 capacityincrement 만큼씩벡터크기가증가

98 5.4. 자바에서중요한클래스 98 메소드 public void add(int index, Object element) - element를 index 위치에추가 public void addelement(object element) - element를맨끝위치에추가 public void remove(int index) - index 위치의 element를삭제 public void removeelement(object element) - 벡터에서처음매칭되는 element를삭제 public Object elementat(int index) - index 번째의 element를리턴 public int size() - 현재벡터에있는 element의개수를리턴

99 5.4. 자바에서중요한클래스 99 예제 : VectorDemo.java 1 import java.util.*; 2 3 public class VectorDemo { 4 public static void main(string args[]) { 5 Vector vector = new Vector(2,2); 6 String str = "hello"; 7 char c = 'c'; 8 char carray[] = {'h', 'e', 'l', 'l', 'o }; 9 int i = 10; vector.addelement(str); 12 vector.addelement(new Character(c)); 13 vector.addelement(carray); 14 vector.addelement(new Integer(i)); print(vector); 17 }...

100 5.4. 자바에서중요한클래스 100 StringTokenizer 클래스 문자열을개별적인토큰으로분리하는방법을제공 생성자 public StringTokenizer(String str) - 문자열 str 을기본적인구별자 ("") 만을 이용해서토큰을구별하기위한생성자 public StringTokenizer(String str, String delim) - 문자열 str을구별자 (delim) 를이용해서토큰을구별하기위한생성자 public StringTokenizer(String str, String delim, boolean returntoken) -문자열 str을구별자 (delim) 를이용해서토큰을구별하고, 구별자를토큰과마찬가지고 nexttoken() 메소드에서리턴할것인지 메소드 여부를 returntoken 값으로기술하는생성자 public boolean hasmoretokens() - 토큰이더이상있는지여부를알아본다. public String nexttoken() - 다음토큰을리턴 public String nexttoken(string delim) - 새로운구별자 (delim) 를이용해서다음토큰을리턴 public int counttokens() - 토큰의개수를리턴

101 5.4 자바에서중요한클래스 101 예제 : StringToken.java 1 import java.util.*; 2 3 public class StringToken { 4 public static void main(string args[]) { 5 String url; 6 if(args.length == 0) 7 url = " 8 else 9 url = args[0]; 10 StringTokenizer st = new StringTokenizer(url, ":/.~", false); 11 while(st.hasmoretokens()) { 12 String token = st.nexttoken(); 13 System.out.println("token => " + token);..

102 6.1 자바의예외처리 102 실세계의예외처리 이부장 void c( ) { try { 박과장.b( );... 작업중단 } catch (Exception e){... } } 3 박과장 void b( ) throws Exception { 김대리.a( );... 작업중단 } 2 김대리 void a( ) throws Exception { 돌발상황발생 1 } 작업중단

103 6.1 자바의예외처리 103 예외처리 간단한에러 ( 예외 ) 가발생하였을때, 이오류를바로잡아서계속수행할수있도록오류를처리 예외혹은예외상황 - 심각하지않은에러 C 언어에서예외처리 방법 보통시그날처리루틴이나, 함수의리턴값으로 일반함수나시스템콜은음수값을혹은 0을리턴 필요할경우 errno에값을할당해서에러의타입을알리기도함

104 6.1 자바의예외처리 104 자바에서예외처리 처리과정 1. 예외 (Exception) 클래스를정의 2. 예외가발생할수있는함수 a() 에서예외가발생할조건을만족하면, Exception 클래스를 throw throw new 예외클래스생성자 () 문장을사용 3. a ( ) 함수를호출하는곳에서는 try-catch 문장을이용해서예외가발생하는경우에문제점을해결 예외클래스종류 자바에서예외 (Exception) 는클래스로표현 모든예외타입 (exception type) 은 Throwable 클래스나이것의서브클래스로부터상속 checked exception 메소드가선언한예외를 throw 하는지를컴파일러가체크 try-catch 문을사용해야한다. unchecked exception RuntimeException 이나 Error 로부터상속받는표준런타임예외와에러 try-catch 문을사용하지않아도컴파일시에에러가발생하지않음 예외타입은클래스이기때문에생성자, 멤버필드, 메소드등을가질수있다.

105 6.1 자바의예외처리 105 throws checked exception을메소드이름뒤에선언 public int dosomething(int x) throws Exception1, Exception2 { } throw 예외는 throw문장을이용해서발생시킨다 throw new Exception1(); throws를혼동하기쉬움 try-catch-finally 예외가발생할수있는문장들을 try문블락에기술한다. 수행도중에예외가발생하면 catch 문으로제어가넘어간다. catch 문은여러개가존재할수있다. finally문은예외발생여부에관계없이항상수행된다.

106 6.1 자바의예외처리 예외가발생될가능성이있는 method 을판단한다. 2. 발생될예외를처리할 Class 를정의한다. 예 Class BoE exception Exception { } 3. Try-and-Catch 위의예외가발생할부분에 Try-and-Catch 를선언한다예 try { } catch (BoE) {... } 4. Throws 예외가발생할가능성이있는 method에대하여위에서정의한 Class 에대한예외를선언한다. 예 method_name () throws BoE {... } 5. Throw 예외가발생될메소드내에서예외발생조건을 check 하여, 예외가발생되면해당예외 Class 를실행한다 throw new BoE();

107 예외처리 107 JDK 에서제공되는예외 Exception 클래스상속관계

108 6.1 자바의예외처리 108 예외관련클래스들 Checked Exception Unchecked Exception

109 6.1 자바의예외처리 예외클래스만들기 Exception 클래스를상속받아야한다. 1 public class BalanceOutOfBoundsException extends Exception { 2 public BalanceOutOfBoundsException() { 3 super(" 잔액을초과하였습니다."); 4 } 5 } 1 public class MalformedData extends RuntimeException { 2 public MalformedData() { 3 super(" 데이터포맷이잘못되었습니다."); 4 } 5 }

110 6.1 자바의예외처리 예외가발생할수있는메소드정의하기 1 public class Account { 2 private long balance; 3 private String name; 4 5 public Account(String name) { 6 this.name = name; 7 } 8 9 public void deposit(int amount) throws MalformedData { 10 if(amount <= 0) { 11 throw new MalformedData(); 12 } 13 balance = balance + amount; 14 } public void withdraw(int amount) 17 throws BalanceOutOfBoundsException, MalformedData { 18 if(amount <= 0) { 19 throw new MalformedData(); 20 } if( balance < amount) { 23 throw new BalanceOutOfBoundsException(); 24 } 25 }

111 6.1 자바의예외처리 try-catch로예외잡기 3 Account hong = new Account(" 홍길동 "); 4 hong.deposit(10000); 5 // hong.deposit(-100); // MalformedData 예외발생 6 try { 7 hong.withdraw(5000); 8 // hong.withdraw(-50); // MalformedData 예외발생 9 } catch (BalanceOutOfBoundsException be) { 10 be.printstacktrace(); 11 } catch (MalformedData me) { 12 me.printstacktrace(); 13 } 14 hong.check();

112 예외처리 112 JDK에서제공되는예외클래스들의예 ArithmeticException 0으로나누는경우에주로발생하는예외상황 ArithmeticException 은 RuntimeException 으로부터상속받은예외클래스 ArrayIndexOutofBoundsException 배열의크기보다큰원소를접근하려고할때발생되는예외 NegativeArraySizeException 배열의크기가음수로된경우에발생하는예외 NullPointerException 생성되지않은객체를이용해서객체의멤버를접근하는경우에 발생하는예외

제4장. 객체지향 프로그래밍 II

제4장. 객체지향 프로그래밍 II 프로그래머를위한 Java 2, 4 판 제4장객체지향프로그래밍 II 4.1.1 상속 상속 기존에있는클래스를바탕으로다른특성을추가해새로운클래스를생성 서브클래스 (subclass), 파생클래스 (derived class), 자식클래스 (child class) 슈퍼클래스 (superclass), 베이스클래스 (baseclass), 부모클래스 (parent class)

More information

Microsoft PowerPoint - lec4_1 [호환 모드]

Microsoft PowerPoint - lec4_1 [호환 모드] 객체지향프로그래밍 - 클래스및객체 - 상속성및다형성 - 추상클래스 - 예외처리 클래스 (class) 객체지향개념 자료 (field) + 자료를처리할수있는루틴 (method) 객체생성 캡슐화 (encapsulation) 정보은폐 (Information hiding) 멤버필드와메소드를클래스의외부에서는접근을조정 상속 (Inheritance) 새로운클래스를정의할때,

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

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

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

PowerPoint Presentation

PowerPoint Presentation 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 +

More information

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

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

Microsoft PowerPoint - lec7_package [호환 모드]

Microsoft PowerPoint - lec7_package [호환 모드] Lecture 7: Package 패키지의선언 패키지의사용 JAR 파일 자바의언어패키지 2 연관된클래스나인터페이스를하나의단위로묶는방법 장점 여러개의클래스와인터페이스를하나의그룹으로다루는수단을제공 클래스이름사이의충돌문제를해결 패키지의종류 기본패키지 : java.lang, java.util, java.io, java.awt 사용자정의패키지 3 선언형태 package

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

예제 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

예제 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 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lab 4 ADT Design 클래스로정의됨. 모든객체들은힙영역에할당됨. 캡슐화 (Encapsulation) : Data representation + Operation 정보은닉 (Information Hiding) : Opertion부분은가려져있고, 사용자가 operation으로만사용가능해야함. 클래스정의의형태 public class Person { private

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

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

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345]) 예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성

More information

No Slide Title

No Slide Title 상속 이충기 명지대학교컴퓨터공학과 상속 Q: 건설회사는기존아파트와조금다르거나추가적인특징들을가진새아파트를지을때어떻게하는가? A: 2 상속 상속 (inheritance) 은클래스들을연관시키는자연스럽고계층적인방법이다. 상속은객체지향프로그래밍의가장중요한개념중의하나이다. 상속은 은 이다 라는관계 (is-a relationship) 를나타낸다. 이관계를적용하여클래스들을상하관계로연결하는것이상속이다.

More information

Microsoft PowerPoint - chap11

Microsoft PowerPoint - chap11 10 장객체 - 지향프로그래밍 II 상속 상속 (Inheritance) 상속이란무엇인가? 기존의클래스로부터새로운클래스를유도하는것 자식클래스는부모클래스의메쏘드와데이터를상속 자식클래스에새로운변수나메쏘드를추가할수있다. 기존클래스 부모클래스 (parent class), 수퍼클래스 (superclass), 기반클래스 (base class) 유도클래스 자식클래스 (child

More information

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint - Lect04.pptx OBJECT ORIENTED PROGRAMMING Object Oriented Programming 이강의록은 Power Java 저자의강의록을사용했거나재편집된것입니다. Class 와 object Class 와객체 클래스의일생 메소드 필드 String Object Class 와객체 3 클래스 클래스의구성 클래스 (l (class): 객체를만드는설계도 클래스로부터만들어지는각각의객체를특별히그클래스의인스턴스

More information

Microsoft PowerPoint - java2 [호환 모드]

Microsoft PowerPoint - java2 [호환 모드] 10 장객체- 지향프로그래밍 II 창병모 1 상속 창병모 2 상속 (Inheritance) 상속이란무엇인가? 기존의클래스로부터새로운클래스를유도하는것 자식클래스는부모클래스의메쏘드와데이터를상속 자식클래스에새로운변수나메쏘드를추가할수있다. 기존클래스 부모클래스 (parent class), 수퍼클래스 (superclass), 기반클래스 (base class) 유도클래스

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 손시운 ssw5176@kangwon.ac.kr 실제세계는객체로이루어진다. 2 객체와메시지 3 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 4 객체 5 객체란? 객체 (Object) 는상태와동작을가지고있다. 객체의상태 (state) 는객체의특징값 ( 속성 ) 이다. 객체의동작 (behavior) 또는행동은객체가취할수있는동작

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

PowerPoint Presentation

PowerPoint Presentation 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 +

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

Cluster management software

Cluster management software 자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException

More information

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

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

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µå

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µå 기초통계프로그래밍 클래스, 객체, 변수, 메소드 hmkang@hallym.ac.kr 금융정보통계학과 강희모 ( 금융정보통계학과 ) 기초통계프로그래밍 1 / 26 자바구성파일 소스파일 소스파일 : 사용자가직접에디터에입력하는파일로자바프로그램언어가제공하는형식으로제작 소스파일의확장자는.java 임 컴파일 : javac 명령어를이용하여프로그래머가만든소스파일을컴파일하여실행파일.class

More information

C++ Programming

C++ Programming C++ Programming 상속과다형성 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 상속의이해 상속과다형성 다중상속 2 상속과다형성 객체의이해 상속클래스의객체의생성및소멸 상속의조건 상속과다형성 다중상속 3 상속의이해 상속 (Inheritance) 클래스에구현된모든특성 ( 멤버변수와멤버함수 )

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

Microsoft PowerPoint - java1 [호환 모드]

Microsoft PowerPoint - java1 [호환 모드] 10 장객체 - 지향프로그래밍 I 창병모 1 10.1 객체 - 지향개념 창병모 2 객체지향 : 동기 프로그램에서실세계객체들을시뮬레이션 창병모 3 객체 (Object) 객체 상태 (state) 객체에대한데이터 행동 (behavior)- 할 ( 될 ) 수있는연산혹은동작 예 : 은행계좌 계좌번호 현재잔액 입금 출금 창병모 4 객체와클래스 객체 Object= 데이터

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

JAVA PROGRAMMING 실습 07. 상속

JAVA PROGRAMMING 실습 07. 상속 상속 부모클래스에정의된필드와메소드를자식클래스가물려받는것 슈퍼클래스 (superclass) 특성을물려주는상위클래스 서브클래스 (subclass) 특성을물려받는하위클래스 슈퍼클래스에자신만의특성 ( 필드, 메소드 ) 추가 슈퍼클래스의특성 ( 메소드 ) 을수정 = 오버라이딩구체화 class Phone 전화걸기전화받기 class MobilePhone 전화걸기전화받기무선기지국연결배터리충전하기

More information

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

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345]) Class Class, Collections 514770-1 2017 년봄학기 3/22/2017 박경신 클래스 (Class) 객체의속성과행위선언 객체의설계도혹은틀 객체 (Object) 클래스의틀로찍어낸실체 메모리공간을갖는구체적인실체 클래스를구체화한객체를인스턴스 (instance) 라고부름 객체와인스턴스는같은뜻으로사용 클래스구조 클래스접근권한, public 다른클래스들에서이클래스를사용하거나접근할수있음을선언

More information

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 예외처리 배효철 th1g@nate.com 1 목차 예외와예외클래스 실행예외 예외처리코드 예외종류에따른처리코드 자동리소스닫기 예외처리떠넘기기 사용자정의예외와예외발생 예외와예외클래스 구문오류 예외와예외클래스 구문오류가없는데실행시오류가발생하는경우 예외와예외클래스 import java.util.scanner; public class ExceptionExample1

More information

Slide 1

Slide 1 SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 14. 상속 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr Learning Objectives 상속의기본 파생클래스와생성자 protected: 제한자 멤버함수의재정의 상속되지않는함수들 상속을이용한프로그래밍

More information

12-file.key

12-file.key 11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 상속 배효철 th1g@nate.com 1 목차 상속개념 클래스상속 부모생성자호출 메소드재정의 final 클래스와 final 메소드 protected 접근제한자 타입변환과다형성 추상클래스 2 상속개념 상속 (Inheritance) 이란? 현실세계 : 부모가자식에게물려주는행위 부모가자식을선택해서물려줌 객체지향프로그램 : 자식 ( 하위, 파생 ) 클래스가부모 (

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?

More information

PowerPoint Presentation

PowerPoint Presentation 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 +

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 # 왜생겼나요..? : 절차지향언어가가진단점을보완하고다음의목적을달성하기위해..! 1. 소프트웨어생산성향상 객체지향소프트웨어를새로만드는경우이미만든개체지향소프트웨어를상속받거나객체를 가져다재사용할수있어부분수정을통해소프트웨어를다시만드는부담줄임. 2. 실세계에대한쉬운모델링 실세계의일은절차나과정보다는일과관련된많은물체들의상호작용으로묘사. 캡슐화 메소드와데이터를클래스내에선언하고구현

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

PowerPoint Template

PowerPoint Template 10. 예외처리 대구가톨릭대학교 IT 공학부 소프트웨어공학연구실 목차 2 10.1 개요 10.2 C++ 의예외처리 10.3 Java 의예외처리 10.4 Ada 의예외처리 10.1 예외처리의개요 (1) 3 예외 (exception) 오버플로나언더플로, 0 으로나누기, 배열첨자범위이탈오류와같이프로그램실행중에비정상적으로발생하는사건 예외처리 (exception handling)

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 1,..... @ 1 Green Project 1991 Oak Java 1995. 5 December '90 by Patrick Naughton, Mike Sheridan and James Gosling Embedded in various consumer electronic device 1992. 9. 3 Star 7 1993 www portability

More information

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

Microsoft PowerPoint - additional08.ppt [호환 모드] 8. 상속과다형성 (polymorphism) 상속된객체와포인터 / 참조자의관계 정적바인딩과동적바인딩 virtual 소멸자 Jong Hyuk Park 상속의조건 public 상속은 is-a 관계가성립되도록하자. 일반화 ParttimeStd 구체화 2 상속의조건 잘못된상속의예 현실세계와완전히동떨어진모델이형성됨 3 상속의조건 HAS-A( 소유 ) 관계에의한상속!

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 9 장생성자와접근제어 이번장에서학습할내용 생성자 정적변수 정적메소드 접근제어 this 클래스간의관계 객체가생성될때초기화를담당하는생성자에대하여살펴봅니다. 생성자 생성자 (contructor): 객체가생성될때에필드에게초기값을제공하고필요한초기화절차를실행하는메소드 생성자의예 class Car { private String color; // 색상

More information

Semantic Consistency in Information Exchange

Semantic Consistency in Information Exchange 제 6 장제어 (Control) 6.1 구조적프로그래밍 (Structured Programming) 6.2 예외 (Exceptions) Reading Chap. 7 숙대창병모 1 6.1 구조적프로그래밍 숙대창병모 2 Fortran 제어구조 10 IF (X.GT. 0.000001) GO TO 20 11 X = -X IF (X.LT. 0.000001) GO TO

More information

01-OOPConcepts(2).PDF

01-OOPConcepts(2).PDF Object-Oriented Programming Concepts Tel: 02-824-5768 E-mail: hhcho@selabsoongsilackr? OOP (Object) (Encapsulation) (Message) (Class) (Inheritance) (Polymorphism) (Abstract Class) (Interface) 2 1 + = (Dependency)

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new

More information

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2 예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 kkman@sangji.ac.kr 2 예외 (exception) 실행시간에발생하는에러 (run-time error) 프로그램의비정상적인종료잘못된실행결과 예외처리 (exception handling) 기대되지않은상황에대해예외를발생야기된예외를적절히처리 (exception handler) kkman@sangji.ac.kr

More information

03-JAVA Syntax(2).PDF

03-JAVA Syntax(2).PDF JAVA Programming Language Syntax of JAVA (literal) (Variable and data types) (Comments) (Arithmetic) (Comparisons) (Operators) 2 HelloWorld application Helloworldjava // class HelloWorld { //attribute

More information

PowerPoint Presentation

PowerPoint Presentation Class : Method Jo, Heeseung 목차 section 1 생성자 (Constructor) section 2 생성자오버로딩 (Overloading) section 3 예약어 this section 4 메소드 4-1 접근한정자 4-2 클래스메소드 4-3 final, abstract, synchronized 메소드 4-4 메소드반환값 (return

More information

07 자바의 다양한 클래스.key

07 자바의 다양한 클래스.key [ 07 ] . java.lang Object, Math, String, StringBuffer Byte, Short, Integer, Long, Float, Double, Boolean, Character. java.util Random, StringTokenizer Calendar, GregorianCalendar, Date. Collection, List,

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

슬라이드 1

슬라이드 1 UNIT 12 상속과오버라이딩 로봇 SW 교육원 2 기 최상훈 학습목표 2 클래스를상속핛수있다. 메소드오버라이딩을사용핛수있다. 패키지선언과 import 문을사용핛수있다. 상속 (inheritance) 3 상속이란 기존의클래스를기반으로새로운클래스를작성 두클래스를부모와자식으로관계를맺어주는것 자식은부모의모든멤버를상속받음 연관된일렦의클래스에대핚공통적인규약을정의 class

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

Chap12

Chap12 12 12Java RMI 121 RMI 2 121 RMI 3 - RMI, CORBA 121 RMI RMI RMI (remote object) 4 - ( ) UnicastRemoteObject, 121 RMI 5 class A - class B - ( ) class A a() class Bb() 121 RMI 6 RMI / 121 RMI RMI 1 2 ( 7)

More information

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

(Microsoft PowerPoint - CLXBUOPUGXNK.ppt [\310\243\310\257 \270\360\265\345]) 자바패기지 학습목표 자바패키지의개념을이해한다. 패키지의종류, 사용및선언방법을이해한다. 자바패키지압축 기능이비슷한라이브러리클래스나인터페이스들을하나의집단으로묶어놓은것 작성자 자바프로그래밍언어혹은사용자 패키지의예 String 클래스, 입출력에관한클래스및인터페이스, 네트워크에관련된클래스등등 패키지에포함된클래스 기본패키지디렉토리 : C:\jdk1.5.0\jre\lib

More information

9장.예외와 단정

9장.예외와 단정 예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 [2/28] 예외 (exception) 실행시간에발생하는에러 (run-time error) 프로그램의비정상적인종료잘못된실행결과 예외처리 (exception handling) 기대되지않은상황에대해예외를발생 야기된예외를적절히처리 (exception handler) [3/28] 단정 (assertion)

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

More information

교육자료

교육자료 THE SYS4U DODUMENT Java Reflection & Introspection 2012.08.21 김진아사원 2012 SYS4U I&C All rights reserved. 목차 I. 개념 1. Reflection 이란? 2. Introspection 이란? 3. Reflection 과 Introspection 의차이점 II. 실제사용예 1. Instance의생성

More information

1

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

PowerPoint Template

PowerPoint Template 9. 객체지향프로그래밍 대구가톨릭대학교 IT 공학부 소프트웨어공학연구실 목차 2 9.1 개요 9.2 객체지향프로그래밍언어 9.3 추상자료형 9.4 상속 9.5 동적바인딩 9.1 객체지향의개념 (1) 3 객체지향의등장배경 소프트웨어와하드웨어의발전불균형 소프트웨어모듈의재사용과독립성을강조 객체 (object) 란? 우리가다루는모든사물을일컫는말 예 ) 하나의점, 사각형,

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 예외처리 (Exception Handling) 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2012-2 nd 프로그래밍입문 (1) 예외상황과예외처리의이해 3 예외상황을처리하지않았을때의결과 예외상황은프로그램실행중에발생하는문제의상황을의미한다. 예외상황의예나이를입력하라고했는데, 0보다작은값이입력됨.

More information

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

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return

More information

Java ~ Java program: main() class class» public static void main(string args[])» First.java (main class ) /* The first simple program */ public class

Java ~ Java program: main() class class» public static void main(string args[])» First.java (main class ) /* The first simple program */ public class Linux JAVA 1. http://java.sun.com/j2se/1.4.2/download.html J2SE 1.4.2 SDK 2. Linux RPM ( 9 ) 3. sh j2sdk-1_4_2_07-linux-i586-rpm.bin 4. rpm Uvh j2sdk-1_4_2_07-linux-i586-rpm 5. PATH JAVA 1. vi.bash_profile

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - Chapter 6.ppt 6.Static 멤버와 const 멤버 클래스와 const 클래스와 static 연결리스트프로그램예 Jong Hyuk Park 클래스와 const Jong Hyuk Park C 의 const (1) const double PI=3.14; PI=3.1415; // 컴파일오류 const int val; val=20; // 컴파일오류 3 C 의 const (1)

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

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

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

Microsoft PowerPoint - lec12 [호환 모드]

Microsoft PowerPoint - lec12 [호환 모드] 제네릭 제네릭클래스 제네릭인터페이스 제네릭메소드 형매개변수의제한 어노테이션 어노테이션형태시스템정의어노테이션사용자정의어노테이션 kkman@sangji.ac.kr 2 제네릭 (generic) 클래스나메소드에자료형을매개변수형식으로사용할수있는기능 자료형과무관하게알고리즘을기술 예전에작성한알고리즘을쉽게재사용가능 어노테이션 (annotation) 프로그램요소에다양한종류의속성정보를추가하기위해서사용

More information

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

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 2 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 자료구조자바세미나 Week1 00 Contents 목차 01 Introduction 02 JAVA? 03 Basic Grammar 04 Array 05 String 06 Class & Method 07 Practice 01 Introduction 자료구조자바세미나기본소개 일시장소 IDE 대상 매주수요일저녁 6 시 (2019.03.20 ~ 2019.04.10)

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new

More information

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

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

자바 프로그래밍

자바 프로그래밍 5 (kkman@mail.sangji.ac.kr) (Class), (template) (Object) public, final, abstract [modifier] class ClassName { // // (, ) Class Circle { int radius, color ; int x, y ; float getarea() { return 3.14159

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 11 장상속 1. 상속의개념을이해한다. 2. 상속을이용하여자식클래스를작성할수있다. 3. 상속과접근지정자와의관계를이해한다. 4. 상속시생성자와소멸자가호출되는순서를이해한다. 이번장에서만들어볼프로그램 class Circle { int x, y; int radius;... class Rect { int x, y; int width, height;... 중복 상속의개요

More information

No Slide Title

No Slide Title 클래스와객체 이충기 명지대학교컴퓨터공학과 들어가며 Q: 축구게임에서먼저공격하는팀을정하기위해동전을던진다. 우리는동전을던질때앞면이나오느냐아니면뒷면이나오느냐에만관심이있다. 또한동전을가지고해야할일은동전을던지는것과동전을던진후결과를알면된다. 이동전을효과적으로나타낼수있는방법을기술하라. A: 2 클래스와객체 객체 (object): 우리주변의어떤대상의모델이다. - 예 : 학생,

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information