PowerPoint Presentation

Similar documents
PowerPoint Presentation

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

쉽게 풀어쓴 C 프로그래밍

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

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - Lect04.pptx

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

5장.key

PowerPoint Presentation

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

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

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

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 2강

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint Presentation

자바 프로그래밍

PowerPoint Presentation

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

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint 장강의노트.ppt

PowerPoint Presentation

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Design Issues

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

JAVA PROGRAMMING 실습 09. 예외처리

설계란 무엇인가?

PowerPoint Presentation

PowerPoint Template

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

비긴쿡-자바 00앞부속

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - Chapter 6.ppt

PowerPoint 프레젠테이션

No Slide Title

PowerPoint 프레젠테이션

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

17장 클래스와 메소드

슬라이드 1

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint 프레젠테이션

untitled

PowerPoint 프레젠테이션

No Slide Title

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

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

교육자료

05-class.key

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

슬라이드 1

gnu-lee-oop-kor-lec11-1-chap15

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

4장.문장

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

Microsoft Word - EEL2 Lab4.docx

TEST BANK & SOLUTION

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

제11장 프로세스와 쓰레드

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chap12-OOP.ppt

Spring Boot/JDBC JdbcTemplate/CRUD 예제

PowerPoint 프레젠테이션

01-OOPConcepts(2).PDF

PowerPoint Presentation

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밊

Microsoft PowerPoint - C++ 5 .pptx

C++ Programming

Spring Data JPA Many To Many 양방향 관계 예제

Blog

PowerPoint Presentation

JAVA PROGRAMMING 실습 02. 표준 입출력

쉽게

02 C h a p t e r Java

슬라이드 1

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

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

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

09-interface.key

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Transcription:

객체지향프로그래밍 클래스와메소드심층연구 ( 실습 ) 손시운 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 A(); // 객체생성 obj.a = 10; // 전용멤버는다른클래스에서는접근안됨 obj.b = 20; // 디폴트멤버는접근할수있음 obj.c = 30; // 공용멤버는접근할수있음 2

예제 2. 설정자와접근자 public class Account { private int regnumber; private String name; private int balance; public String getname() { return name; public void setname(string name) { this.name = name; public int getbalance() { return balance; public void setbalance(int balance) { this.balance = balance; 3

예제 2. 설정자와접근자 public class AccountTest { public static void main(string[] args) { Account obj = new Account(); obj.setname("tom"); obj.setbalance(100000); System.out.println(" 이름은 " + obj.getname() + " 통장잔고는 " + obj.getbalance() + " 입니다."); 이름은 Tom 통장잔고는 100000 입니다. 4

예제 3. 안전한배열만들기 만약인덱스가배열의크기를벗어나게되면실행오류가발생한다. 따라서 실행오류를발생하지않는안전한배열을작성하여보자. 5

예제 3. 안전한배열만들기 public class SafeArray { private int a[]; public int length; public SafeArray(int size) { a = new int[size]; length = size; public int get(int index) { if (index >= 0 && index < length) { return a[index]; return -1; public void put(int index, int value) { if (index >= 0 && index < length) { a[index] = value; else System.out.println(" 잘못된인덱스 " + index); 6

예제 3. 안전한배열만들기 public class SafeArrayTest { public static void main(string args[]) { SafeArray array = new SafeArray(3); for (int i = 0; i < (array.length + 1); i++) { array.put(i, i * 10); 잘못된인덱스 3 7

예제 4. 생성자의예 public class MyCounter { int counter; MyCounter() { counter = 1; 8

예제 4. 생성자의예 public class MyCounterTest { public static void main(string args[]) { MyCounter obj1 = new MyCounter(); MyCounter obj2 = new MyCounter(); System.out.println(" 객체 1의 counter = " + obj1.counter); System.out.println(" 객체 2의 counter = " + obj2.counter); 객체 1 의 counter = 1 객체 2 의 counter = 1 9

예제 5. 매개변수를가지는생성자의예 class MyCounter { int counter; MyCounter(int value) { counter = value; 10

예제 5. 매개변수를가지는생성자의예 public class MyCounterTest { public static void main(string args[]) { MyCounter obj1 = new MyCounter(100); MyCounter obj2 = new MyCounter(200); System.out.println(" 객체 1 의 counter = " + obj1.counter); System.out.println(" 객체 2 의 counter = " + obj2.counter); 객체 1 의 counter = 100 객체 2 의 counter = 200 11

예제 6. Television 생성자 생성자를추가해보자. public class Television { private int channel; // 채널번호 private int volume; // 볼륨 private boolean onoff; // 전원상태 void print() { System.out.println(" 채널은 " + channel + " 이고볼륨은 " + volume + " 입니다."); 12

예제 6. Television 생성자 public class Television { private int channel; // 채널번호 private int volume; // 볼륨 private boolean onoff; // 전원상태 Television(int c, int v, boolean o) { channel = c; volume = v; onoff = o; void print() { System.out.println(" 채널은 " + channel + " 이고볼륨은 " + volume + " 입니다."); 13

예제 6. Television 생성자 public class TelevisionTest { public static void main(string[] args) { Television mytv = new Television(7, 10, true); mytv.print(); Television yourtv = new Television(11, 20, true); yourtv.print(); 14

예제 7. Box 클래스 15

예제 7. Box 클래스 public class Box { private int width; private int length; private int height; private int volume; public int getvolume() { return volume; Box(int w, int l, int h) { width = w; length = l; height = h; volume = width * length * height; 16

예제 7. Box 클래스 public class BoxTest { public static void main(string[] args) { Box b = new Box(20, 20, 30); System.out.println(" 상자의부피는 " + b.getvolume() + " 입니다 "); 상자의부피는 12000 입니다 17

생성자가없는클래스 vs. 생성자가있는클래스 생성자가없는클래스 public class Dummy { public class DummyTest { public static void main(string args[]) { Dummy obj = new Dummy(); 생성자가있는클래스 public class Dummy { public Dummy(int a) { public class DummyTest { public static void main(string args[]) { Dummy obj1 = new Dummy(); Dummy obj2 = new Dummy(1); 18

예제 8. 생성자오버로딩 public class Student { private int number; private String name; private int age; Student() { number = 100; name = "New Student"; age = 18; Student(int number, String name, int age) { this.number = number; this.name = name; this.age = age; @Override public String tostring() { return "Student [number=" + number + ", name=" + name + ", age=" + age + "]"; 19

예제 9. 날짜를나타내는 Date 클래스 20

예제 9. 날짜를나타내는 Date 클래스 public class Date { private int year; private String month; private int day; public Date() { // 기본생성자 this(1900, "1월", 1); public Date(int year) { // 생성자 this(year, "1월", 1); public Date(int year, String month, int day) { // 생성자 this.month = month; // this는현재객체를가리킨다. this.day = day; this.year = year; @Override public String tostring() { return "Date [year=" + year + ", month=" + month + ", day=" + day + "]"; 21

예제 9. 날짜를나타내는 Date 클래스 public class DateTest { public static void main(string[] args) { Date date1 = new Date(2015, "8월", 10); Date date2 = new Date(2020); Date date3 = new Date(); System.out.println(date1); System.out.println(date2); System.out.println(date3); Date [year=2015, month=8 월, day=10] Date [year=2020, month=1 월, day=1] Date [year=1900, month=1 월, day=1] 22

예제 10. 시간를나타내는 Time 클래스 23

예제 10. 시간를나타내는 Time 클래스 class Time { private int hour; // 0-23 private int minute; // 0-59 private int second; // 0-59 // 첫번째생성자 public Time() { this(0, 0, 0); // 두번째생성자 public Time(int h, int m, int s) { hour = ((h >= 0 && h < 24)? h : 0); // 시간검증 minute = ((m >= 0 && m < 60)? m : 0); // 분검증 second = ((s >= 0 && s < 60)? s : 0); // 초검증 // 시 : 분 : 초 의형식으로출력 public String tostring() { return String.format("%02d:%02d:%02d", hour, minute, second); 24

예제 10. 시간를나타내는 Time 클래스 public class TimeTest { public static void main(string args[]) { // Time 객체를생성하고초기화한다. Time time = new Time(); System.out.println(" 기본생성자호출후시간 : "+time.tostring()); // 두번째생성자호출 Time time2 = new Time(13, 27, 6); System.out.print(" 두번째생성자호출후시간 : "+time2.tostring()); // 올바르지않은시간으로설정해본다. Time time3 = new Time(99, 66, 77); System.out.print(" 올바르지않은시간설정후시간 : "+time3.tostring()); 기본생성자호출후시간 : 00:00:00 두번째생성자호출후시간 : 13:27:06 올바르지않은시간설정후시간 : 00:00:00 25

예제 11. 원을나타내는 Circle 클래스 26

예제 11. 원을나타내는 Circle 클래스 public class Point { private int x, y; public Point(int a, int b) { x = a; y = b; @Override public String tostring() { return "Point [x=" + x + ", y=" + y + "]"; 27

예제 11. 원을나타내는 Circle 클래스 public class Circle { private int radius; private Point center; public Circle(Point p, int r) { center = p; radius = r; @Override public String tostring() { return "Circle [radius=" + radius + ", center=" + center + "]"; 28

예제 11. 원을나타내는 Circle 클래스 public class CircleTest { public static void main(string args[]) { Point p = new Point(25, 78); Circle c = new Circle(p, 10); System.out.println(c); Circle [radius=10, center=point [x=25, y=78]] 29

예제 12. 메소드로기초형변수가전달되는경우 기초형변수가전달되는경우 30

예제 12. 메소드로기초형변수가전달되는경우 public class MyCounter { int value; void inc(int a) { a = a + 1; public class MyCounterTest1 { public static void main(string args[]) { x = 10 MyCounter obj = new MyCounter(); int x = 10; obj.inc(x); System.out.println("x = " + x); 31

예제 13. 메소드로객체가전달되는경우 객체를메소드로전달하게되면객체가복사되어전달되는것이아니고참 조변수의값이복사되어서전달된다. 32

예제 13. 메소드로객체가전달되는경우 class MyCounter { int value = 0; void inc(mycounter ctr) { ctr.value = ctr.value + 1; public class MyCounterTest2 { public static void main(string args[]) { MyCounter obj = new MyCounter(); System.out.println("obj.value = " + obj.value); obj.inc(obj); System.out.println("obj.value = " + obj.value); obj.value = 0 obj.value = 1 33

예제 14. 메소드에서객체반환하기 public class Box { int width, length, height; int volume; Box(int w, int l, int h) { width = w; length = l; height = h; volume = w * l * h; Box whoslargest(box box1, Box box2) { if (box1.volume > box2.volume) return box1; else return box2; 34

예제 14. 메소드에서객체반환하기 public class BoxTest { public static void main(string args[]) { Box obj1 = new Box(10, 20, 50); Box obj2 = new Box(10, 30, 30); Box largest = obj1.whoslargest(obj1, obj2); System.out.println("(" + largest.width + "," + largest.length + "," + largest.height + ")"); (10,20,50) 35

예제 15. 같은크기의 Box 인지확인하기 2 개의박스가같은치수인지를확인하는메소드 issamebox() 를작성하여보 자. 만약박스의크기가같으면 true 를반환하고크기가다르면 false 를반환 한다. issamebox() 의매개변수는객체참조변수가된다. 36

예제 15. 같은크기의 Box 인지확인하기 public class Box { int width, length, height; Box(int w, int l, int h) { width = w; length = l; height = h; boolean issamebox(box obj) { if ((obj.width==width) && (obj.length==length) && (obj.height==height)) return true; else return false; 37

예제 15. 같은크기의 Box 인지확인하기 public class BoxTest { public static void main(string args[]) { Box obj1 = new Box(10, 20, 50); Box obj2 = new Box(10, 20, 50); System.out.println("obj1 == obj2 : " + obj1.issamebox(obj2)); obj1 == obj2 : true 38

예제 16. 정적변수예제 public class Car { private String model; private String color; private int speed; // 자동차의시리얼번호 private int id; private static int numbers = 0; public Car(String m, String c, int s) { model = m; color = c; speed = s; // 자동차의개수를증가하고 id 에대입한다. id = ++numbers; 39

예제 16. 정적변수예제 public class CarTest { public static void main(string args[]) { Car c1 = new Car("S600", white, 80); // 첫번째생성자호출 Car c2 = new Car("E500", blue, 20); // 첫번째생성자호출 int n = Car.numbers; // 정적변수 System.out.println(" 지금까지생성된자동차수 = " + n); 지금까지생성된자동차수 = 2 40

예제 17. 정적메소드예제 public class Car { private String model; private String color; private int speed; // 자동차의시리얼번호 private int id; // 실체화된 Car 객체의개수를위한정적변수 private static int numbers = 0; public Car(String m, String c, int s) { model = m; color = c; speed = s; // 자동차의개수를증가하고 id에대입한다. id = ++numbers; // 정적메소드 public static int getnumberofcars() { return numbers; // OK! 41

예제 17. 정적메소드예제 public class CarTest { public static void main(string args[]) { Car c1 = new Car("S600", white, 80); // 첫번째생성자호출 Car c2 = new Car("E500", blue, 20); // 첫번째생성자호출 int n = Car.getNumberOfCars(); // 정적메소드호출 System.out.println(" 지금까지생성된자동차수 = " + n); 지금까지생성된자동차수 = 2 42

예제 18. 직원클래스작성하기 직원을나타내는클래스에서직원들의수를카운트하는예를살펴보자. 직 원의수를정적변수로나타낸다. 객체가하나씩생성될때마다생성자에서 정적변수 count 를증가한다. 43

예제 18. 직원클래스작성하기 public class Employee { private String name; private double salary; private static int count = 0; // 정적변수 // 생성자 public Employee(String n, double s) { name = n; salary = s; count++; // 정적변수인 count를증가 // 객체가소멸될때호출된다. protected void finalize() { count--; // 직원이하나줄어드는것이므로 count를하나감소 // 정적메소드 public static int getcount() { return count; 44

예제 18. 직원클래스작성하기 public class EmployeeTest { public static void main(string[] args) { Employee e1, e2, e3; e1 = new Employee(" 김철수 ", 35000); e2 = new Employee(" 최수철 ", 50000); e3 = new Employee(" 김철호 ", 20000); int n = Employee.getCount(); System.out.println(" 현재의직원수 =" + n); 현재의직원수 =3 45

예제 19. 내부클래스 게임에서캐릭터가여러가지아이템을가지고있다. 이것을코드로구현하 여보자. 아이템은캐릭터만사용한다고가정하자. 그러면캐릭터를나타내 는클래스안에아이템을내부클래스로정의할수있다. 46

예제 19. 내부클래스 import java.util.arraylist; public class GameCharacter { private class GameItem { String name; int type; int price; int getprice() { return price; @Override public String tostring() { return "GameItem [name=" + name + ", type=" + type + ", price=" + price + "]"; 47

예제 19. 내부클래스 private ArrayList<GameItem> list = new ArrayList<>(); public void add(string name, int type, int price) { GameItem item = new GameItem(); item.name = name; item.type = type; item.price = price; list.add(item); public void print() { int total = 0; for (GameItem item : list) { System.out.println(item); total += item.getprice(); System.out.println(total); 48

예제 19. 내부클래스 public class GameChracterTest { public static void main(string[] args) { GameCharacter charac = new GameCharacter(); charac.add("sword", 1, 100); charac.add("gun", 2, 50); charac.print(); GameItem [name=sword, type=1, price=100] GameItem [name=gun, type=2, price=50] 150 49