제 4주 – 클래스 설계 제 4주 목표 클래스를 구현하는 법을 배운다. 변수 선언 메소드 구현 구성자 객체지향프로그래밍

Slides:



Advertisements
Similar presentations
5 장 조건과 반복 ②. Contents Counting and Looping [while 문 사용 ] Powers of 2 [while 문 사용 ] More Guessing [do 문 사용 ] Election Day [do 문 사용 ] Finding Maximum &
Advertisements

강원대학교 자바프로그래밍 4. 클래스 설계 2 자바프로그래밍 1. 객체 자신에게 메소드 호출하기 vs 다른 객체에게 메소드 호출하기 강원대학교자바프로그래밍 2.
강원대학교 자바프로그래밍 제 4 주 클래스 설계 2 자바프로그래밍 1. 객체 자신에게 메소드 호출하기 vs 다른 객체에게 메소드 호출하기 강원대학교자바프로그래밍 2.
강원대학교 3 클래스 구현 1. 강원대학교 클래스 구현 순서 1. 클래스의 공개 인터페이스 설계 2. 메소드 선언 ( 메소드 사용 사례를 적어 봄 ) 3. 구성자 선언 4. 주석 기입 및 API 문서 제작 5. 필드 선언 6. 메소드 구현 7. 테스트 2.
3 클래스 구현 자바프로그래밍 강원대학교.
어서와 Java는 처음이지! 제3장선택과 반복.
제 7주 2015년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
C++ Espresso 제1장 기초 사항.
Power Java 제13장 패키지(Package).
객체지향 프로그래밍.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
7장 배열 ②.
Java Presentation 중간 시험2 풀이
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
윤 홍 란 제3장 클래스와 객체의 사용-1 윤 홍 란
Internet Computing KUT Youn-Hee Han
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
제7장 제어구조 I – 식과 문장.
명품 JAVA Essential.
정적 메소드와 정적 변수 상수 래퍼 클래스 포매팅
Java RMI (Remote Method Invocation)
명품 JAVA Programming 제 4 장 클래스와 객체.
Power Java 제4장 자바 프로그래밍 기초.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
Power Java 제10장 배열.
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
자바 5.0 프로그래밍.
Power Java 제15장 예외 처리 (Exception Handling).
명품 JAVA Essential.
명품 Java Programming.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
윤 홍 란 4 장 클래스 작성 윤 홍 란
Power Java 제7장 클래스와 객체.
5장 조건과 반복 ①.
인터페이스(Interfaces) 강원대학교.
김 정 석 Web Programming 김 정 석
7장 배열 ①.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
6장 객체-지향 설계 ①.
제1장 서론.
2009학년도 1학기 상지대학교 컴퓨터정보공학부 고 광 만
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
5장 조건과 반복 ②.
제2장 데이터 및 수식.
6장 객체-지향 설계 ①.
WAP Java Seminar
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
[INA470] Java Programming Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
자바 5.0 프로그래밍.
5장 조건과 반복 ①.
문자열 처리하기 working with Strings
Chapter 02. 소프트웨어와 자료구조.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
제 4 장 클래스 작성 Lab 4- 2.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
Java RMI (Remote Method Invocation)
Chapter 4 클래스 작성.
Java 5장. 객체지향 개념 public class SumTest {
C# 09장. 클래스와 객체.
1. 객체-지향 프로그래밍.
Presentation transcript:

제 4주 – 클래스 설계 제 4주 목표 클래스를 구현하는 법을 배운다. 변수 선언 메소드 구현 구성자 객체지향프로그래밍 강원대학교

캡슐화 (encapsulation) 내부의 동작과 상태가 외부 사용자에게는 보이지 않게함 자동차 움직이는 기능을 함 사용자는 간단한 조작 방법(public interface)만 알면 됨 내부 엔진, 구동축, 스프링, 전자제어 등 상세한 구현 및 동작 내용은 운전자에게 보이지 않음 객체지향프로그래밍 강원대학교

객체 객체 객체에 캡슐화 개념 적용 내부가 아무리 복잡하더라고 사용자에게는 단순하게 보임 외부에 보이는 개념 (기능과 사용법) 내부의 세부 내용 객체지향프로그래밍 강원대학교

추상화 (Astraction) 외부에 나타나는 개념은 추상화를 통해 형성됨 추상화: 중요하지 않은 세부 내용을 제거함으로써 핵심적인 내용만을 추출함 자동차의 예 엔진 회전시키고 냉각수 돌리고 스프링 쿠션 주고 배기가스 정화하는 등 시시콜콜 많은 것들이 그 안에 있지만 이들을 생략하고 문짝과 지붕, 엔진과 핸들이 달린 탈 것이라고 표현하는 것 추상화 단계 실제 의자 – 의자 그림 – 의자 아이콘 – “의자” 문자 표현은 고도의 추상화 결과 객체지향프로그래밍 강원대학교

단계적인 추상화 객체 안에는 다른 객체가 들어 있다. 객체의 제작자가 있고 사용자가 있다. 객체의 사용자는 객체 내부에 대해 자세히 알 필요가 없다. 객체의 사용법은 잘 정의되어 있으며 알려져 있다. (자바 라이브러리 API 문서) 객체지향프로그래밍 강원대학교

클래스의 설계 구동클래스 – 지금까지 작성한 main 메소드를 가진 클래스 작업클래스 – 고유한 기능을 갖는 클래스 라이브러리에 있는 클래스 사용자가 정의하는 크래스들 지금까지 다른 사람이 설계한 클래스를 이용함 (Printstream, String, JFrame, StringTokenizer) 새로운 클래스를 설계하는 법을 공부함 객체지향프로그래밍 강원대학교

클래스 정의문 구성 class ClassName { fields methods nested classes and interfaces } 클래스 멤버 class 앞에 public을 붙일 수 있다. 이 경우 세상 누구나 이 클래스를 사용할 수 있다는 의미 public이 없으면 같은 패키지 내에서만 사용할 수 있다. 객체지향프로그래밍 강원대학교

Fields (변수) 변수 선언 타입과 변수이름을 적어줌 선언과 함께 초기값을 정해줄 수도 있음 int i; // i는 int 타입 변수임 Student s; // s는 Student 타입 레퍼런스 변수임 선언과 함께 초기값을 정해줄 수도 있음 int i = 4; Student s = new Student(); 객체지향프로그래밍 강원대학교

Fields (변수) 변수에의 접근성 (accessibility) public int i; // 누구나 i에 접근할 수 있음 private int i; // 같은 클래스 안에서만 접근할 수 있음 일반적으로 클래스 외부에서 클래스 내의 변수에 접근하는 것은 캡슐화원칙에 어긋나므로 이를 허용하지 않음 통상 private로 선언 객체지향프로그래밍 강원대학교

Fields (변수) 클래스 변수에 직접 접근하려면 아래와 같이 함 Student s = new Student(); System.out.println(s.name); s.name = “배철수”; class Studnent { String name = “철수”; } 이런 방법은 권장하지 않음 객체의 내부 상태는 그 객체가 지원하는 메소드를 통해서 변경하는 것이 좋음 객체지향프로그래밍 강원대학교

Methods (메소드) class ClassName { fields methods nested classes and interfaces } 객체지향프로그래밍 강원대학교

메소드 정의 (Method Definition) access specifier list of parameters method name public void deposit(double amount) { . . . } public void withdraw(double amount) { . . . } public double getBalance() { . . . } return type method body 객체지향프로그래밍 강원대학교

메소드 사용 메소드 정의 public class Tester { public static void main(String[] args){ Account a = new Account(); a.deposit(100.0); double money = a.getBalance(); System.out.println("잔액은 " + money + "원입니다."); } class Account { private double balance = 0.0; public void deposit(double amount) { balance += amount; public double getBalance() { return balance; 메소드 사용 메소드 정의 객체지향프로그래밍 강원대학교

public static void main(String[] args){ Account a = new Account(); public class Tester { public static void main(String[] args){ Account a = new Account(); a.deposit(100.0); double money = a.getBalance(); System.out.println("잔액은 " + money + "원입니다."); } class Account { private double balance = 0.0; public void deposit(double amount) { balance += amount; public double getBalance() { return balance; 인자 (argument) 매개변수 (parameter) 외부에서 balance에 직접 접근하지 못함! 객체지향프로그래밍 강원대학교

public static void main(String[] args){ Account a = new Account(); public class Tester { public static void main(String[] args){ Account a = new Account(); a.deposit(100.0); double money = a.getBalance(); System.out.println("잔액은 " + money + "원입니다."); } class Account { private double balance = 0.0; public void deposit(double amount) { balance += amount; public double getBalance() { return balance; 인자 (argument) call-by-value (값 복사) 매개변수 (parameter) 객체지향프로그래밍 강원대학교

매개변수 2개 사용 다중정의 public class Tester { public static void main(String[] args){ Account a = new Account(); a.deposit(100.0, 200.0); double money = a.getBalance(); System.out.println("잔액은 " + money + "원입니다."); } class Account { private double balance = 0.0; public void deposit(double amount) { balance += amount; public void deposit(double a1, double a2) { balance = a1 + a2; public double getBalance() { return balance; 매개변수 2개 사용 다중정의 객체지향프로그래밍 강원대학교

sumValue = sum(value1, value2); 메소드 사용 int sumValue; int value1 = 40; int value2 = 2; sumValue = sum(value1, value2); argument (인자) parameter 메소드 정의 int sum(int addend1, int addend2) { return addend1 + addend2; } 객체지향프로그래밍 강원대학교

메소드에의 접근성 외부로 노출시켜야 할 메소드는 public 내부 기능을 위한 메소드는 private 객체지향프로그래밍 강원대학교

private double balance = 0.0; final double BONUS_RATE = 0.01; class Account { private double balance = 0.0; final double BONUS_RATE = 0.01; public void deposit(double amount) { balance = amount + calculateBonus(amount); } public double getBalance() { return balance; // Account 내부에서만 사용되는 메소드 private double calculateBonus(double amount){ return amount*BONUS_RATE; 객체지향프로그래밍 강원대학교

private double balance = 0.0; final double BONUS_RATE = 0.01; class Account { private double balance = 0.0; final double BONUS_RATE = 0.01; public void deposit(double amount) { balance = amount + calculateBonus(amount); } // Account 내부에서만 사용되는 메소드 private double calculateBonus(double amount){ return amount*BONUS_RATE; 다른 객체에게 메소드를 호출할 때: reference.methodName(); 자기자신에게 메소드를 호출할 때: methodName(); 객체지향프로그래밍 강원대학교

다른 객체에게 메소드를 호출할 때: reference.methodName(); class LabelViewer extends JFrame { ... JPanel panel = new JPanel(); JLabel label = new label(“라벨”); panel.add(lebel); add(panel); } 객체지향프로그래밍 강원대학교

클래스의 공개 인터페이스 설계(Designing the Public Interface of a Class) 예: 은행계좌 (bank account) 추상화: 은행계좌가 갖추어야 할 필수 기능 예금 출금 잔고조회 이러한 기능들은 public 메소드로 구현됨 객체지향프로그래밍 강원대학교

메소드 Methods of BankAccount class: 이 메소드들은 아래 예처럼 사용될 것이다. deposit (예금하다) withdraw (출금하다) getBalance (잔고) harrysChecking.deposit(2000); harrysChecking.withdraw(500); System.out.println(harrysChecking.getBalance()); 객체지향프로그래밍 강원대학교

구성자 (Constructor) 구성자는 객체가 구성될 때 실행된다. 객체 내부 변수를 초기화하는 데 사용된다. 구성자 이름은 클래스 이름과 같으며 반환값을 갖지 않는다. 파라미터가 서로 다른 여러개의 구성자가 있을 수 있다. (다중정의) public BankAccount(); public BankAccount(double initialBalance); BankAccount 객체를 구성할 때 아래와 같이 하면 초기 잔고가 5000 원인 계좌가 만들어진다. BankAccount account = new BankAccount(5000); 객체지향프로그래밍 강원대학교

BankAccount Public Interface public interface of a class = public constructors + public methods public class BankAccount { public BankAccount() { ... } public BankAccount(double initialBalance) { ... } public void deposit(double amount) { ... } public void withdraw(double amount) { ... } public double getBalance() { ...} // private field } 객체지향프로그래밍 강원대학교

Implementing and Using Constructors public BankAccount() { balance = 0; } public BankAccount(double initialBalance) { balance = initialBalance; } BankAccount harrysChecking = new BankAccount(1000); BankAccount marysChecking = new BankAccount(); 1000 harrysChecking marysChecking 객체지향프로그래밍 강원대학교

Implementing Methods Some methods do not return a value Some methods return an output value public void withdraw(double amount) { double newBalance = balance - amount; balance = newBalance; } public double getBalance() { return balance; } 객체지향프로그래밍 강원대학교

인스턴스 (instance) Instance of a class = an object of the class 철수, 영희는 사람 클래스의 인스턴스이다. 메리, 독구, 쫑은 개 클래스의 인스턴스이다. 철수, 영희, 메리, 독구, 쫑은 모두 객체이다. 객체지향프로그래밍 강원대학교

Instance Fields public class BankAccount { public BankAccount() { ... } public BankAccount(double initialBalance) { ... } public void deposit(double amount) { ... } public void withdraw(double amount) { ... } public double getBalance() { ...} private double balance; } 객체지향프로그래밍 강원대학교

Instance Fields 객체지향프로그래밍 강원대학교

File BankAccount.java 01: /** 02: A bank account has a balance that can be changed by 03: deposits and withdrawals. 04: */ 05: public class BankAccount 06: { 07: /** 08: Constructs a bank account with a zero balance. 09: */ 10: public BankAccount() 11: { 12: balance = 0; 13: } 14: 15: /** 16: Constructs a bank account with a given balance. 17: @param initialBalance the initial balance 18: */ 객체지향프로그래밍 강원대학교

File BankAccount.java 19: public BankAccount(double initialBalance) 20: { 21: balance = initialBalance; 22: } 23: 24: /** 25: Deposits money into the bank account. 26: @param amount the amount to deposit 27: */ 28: public void deposit(double amount) 29: { 30: double newBalance = balance + amount; 31: balance = newBalance; 32: } 33: 34: /** 35: Withdraws money from the bank account. 36: @param amount the amount to withdraw 객체지향프로그래밍 강원대학교

File BankAccount.java 37: */ 38: public void withdraw(double amount) 37: */ 38: public void withdraw(double amount) 39: { 40: double newBalance = balance - amount; 41: balance = newBalance; 42: } 43: 44: /** 45: Gets the current balance of the bank account. 46: @return the current balance 47: */ 48: public double getBalance() 49: { 50: return balance; 51: } 52: 53: private double balance; 54: } 객체지향프로그래밍 강원대학교

File BankAccountTester.java 01: /** 02: A class to test the BankAccount class. 03: */ 04: public class BankAccountTester 05: { 06: /** 07: Tests the methods of the BankAccount class. 08: @param args not used 09: */ 10: public static void main(String[] args) 11: { 12: BankAccount harrysChecking = new BankAccount(); 13: harrysChecking.deposit(2000); 14: harrysChecking.withdraw(500); 15: System.out.println(harrysChecking.getBalance()); 16: } 17: } 객체지향프로그래밍 강원대학교

Commenting on the Public Interface 정해진 규칙에 맞추어 주석을 달면 javadoc 도구를 사용해 API 문서를 만들어 낼 수 있다. $ javadoc BankAccount.java /** BankAccount는 은행계좌로서 입금, 출금이 가능하며 현재 잔고를 확인할 수 있다. */ public class BankAccount { . . . } 객체지향프로그래밍 강원대학교

/** 계좌에서 출금한다. @param amount 출금액수 /** 계좌에서 출금한다. @param amount 출금액수 */ public void withdraw(double amount) { // implementation filled in later } /** 잔고를 보여준다. @return 잔고 */ public double getBalance() { // implementation filled in later } 객체지향프로그래밍 강원대학교

객체지향프로그래밍 강원대학교

객체지향프로그래밍 강원대학교

System.out.println("멍멍!"); } public void eat() { Dog.java 작업 클래스 Cat.java 작업 클래스 public class Dog { public void bark() { System.out.println("멍멍!"); } public void eat() { System.out.println("짭짭!"); public class Cat { public void meow() { System.out.println("야옹!"); } public void eat() { System.out.println("얌냠!"); AnimalDrive.java 구동 클래스 public class AnimalDrive { public static void main(String[] args) { Dog mary = new Dog(); // 객체생성 Cat navy = new Cat(); // 객체생성 mary.bark(); // 객체에 행동 지시 mary.eat(); // 객체 메소드 호출 navy.meow(); navy.eat(); } $ javac Dog.java Cat.java $ javac AnimalDrive.java $ java AnimalDrive 멍멍! 짭짭! 야옹! 얌냠! 객체지향프로그래밍 강원대학교

$ javac DogTest.java $ java DogTest 멍멍! 짭짭! public class Dog { Dog.java public class Dog { public void bark() { System.out.println("멍멍!"); } public void eat() { System.out.println("짭짭!"); $ javac DogTest.java $ java DogTest 멍멍! 짭짭! Dog.java 파일은 다시 컴파일 할 필요가 없음 같은 디렉토리에 있는 클래스는 import하지 않고 그냥 사용할 수 있음 DogTest.java public class DogTest { public static void main(String[] args) { Dog mary = new Dog(); // 객체생성 Dog john = new Dog(); // 객체생성 mary.bark(); // 객체에 행동 지시 mary.eat(); // 객체 메소드 호출 john.bark(); john.eat(); } Dog 인스턴스를 두 개 생성하여 하나는 mary라고 하고 다른 하나는 john이라고 했음 mary와 john은 모두 Dog 클래스에 속하는 객체임 객체지향프로그래밍 강원대학교

Instance Fields 인스턴스마다 각각 가지고 있는 필드 public class Dog { private int age; // instance field public void setAge(int a) { age = a; } public int getAge() { return age; public void bark() { System.out.println("멍멍!"); public void eat() { System.out.println("짭짭!"); public class DogTest { public static void main(String[] args) { Dog mary = new Dog(); Dog john = new Dog(); mary.setAge(3); john.setAge(5); } instance field 3 5 mary john 객체지향프로그래밍 강원대학교

Categories of Variables Instance fields Local variables Parameter variables 메소드에 속하며 메소드가 실행되는 동안에만 존재함 public class BankAccount {  private double balance; public void deposit(double amount) {    double newBalance = balance + amount;    balance = newBalance; } } 객체지향프로그래밍 강원대학교

public class BankAccountTester { public static void main(String[] args) BankAccount harrysChecking = new BankAccount(3000); BankAccount marysChecking = new BankAccount(1000); harrysChecking.withdraw(2000); marysChecking.withdraw(500); System.out.println(harrysChecking.getBalance()); System.out.println(marysChecking.getBalance()); } harrysChecking public void withdraw(double amount) { double newBalance = balance - amount; balance = newBalance; } balance: 3000 marysChecking balance: 1000 BankAccount 인스턴스가 두개 구성되었고 각 객체마다 balance라는 인스턴스 필드를 가지고 있다. withdraw 메소드 내의 balance는 그 중 어느 것일까? 객체지향프로그래밍 강원대학교

public class BankAccountTester { public static void main(String[] args) BankAccount harrysChecking = new BankAccount(3000); BankAccount marysChecking = new BankAccount(1000); harrysChecking.withdraw(2000); // A marysChecking.withdraw(500); // B System.out.println(harrysChecking.getBalance()); System.out.println(marysChecking.getBalance()); } public void withdraw(double amount) { double newBalance = balance - amount; balance = newBalance; } withdraw 메소드를 실행하는 객체가 갖고 있는 인스턴스 필드이다. A 문장이 실행될 때의 balance는 harrysChecking 객체 내의 balance B 문장이 실행될 때의 balance는 marysChecking 객체 내의 balance 객체지향프로그래밍 강원대학교

메소드를 실행하는 객체 자신을 가리키는 키워드 this 의미를 명확히 하기 위해 위와 같이 적어 줄 수도 있다. public class BankAccountTester { public static void main(String[] args) BankAccount harrysChecking = new BankAccount(3000); BankAccount marysChecking = new BankAccount(1000); harrysChecking.withdraw(2000); marysChecking.withdraw(500); System.out.println(harrysChecking.getBalance()); System.out.println(marysChecking.getBalance()); } public void withdraw(double amount) { double newBalance = this.balance - amount; balance = newBalance; } 메소드를 실행하는 객체 자신을 가리키는 키워드 this 의미를 명확히 하기 위해 위와 같이 적어 줄 수도 있다. 객체지향프로그래밍 강원대학교

구성자 내에서의 this 사용 public BankAccount() { this(0.0); } public BankAccount(double initialBalance) { balance = initialBalance; } BankAccount harrysChecking = new BankAccount(1000.0); BankAccount marysChecking = new BankAccount(); 1000.0 0.0 harrysChecking marysChecking 객체지향프로그래밍 강원대학교

잡동사니 객체지향프로그래밍 강원대학교

Constants: static final static final constant는 다른 클래스에 의해 주로 사용됨 static final constant는 아래와 같은 방법으로 사용 public class Math { . . . public static final double E = 2.7182818284590452354; public static final double PI = 3.14159265358979323846; } double circumference = Math.PI * diameter; // Math 클래스 밖에서 사용 객체지향프로그래밍 강원대학교

Calling Static Methods ClassName. methodName(parameters) Math 클래스 메소드들은 대부분 static 메소드 객체지향프로그래밍 강원대학교

The Math class (-b + Math.sqrt(b*b - 4*a*c)) / (2*a) 객체지향프로그래밍 강원대학교

Mathematical Methods in Java Math.sqrt(x) square root Math.pow(x, y) power xy Math.exp(x) ex Math.log(x) natural log Math.sin(x), Math.cos(x), Math.tan(x) sine, cosine, tangent (x in radian) Math.round(x) closest integer to x Math.min(x, y), Math.max(x, y) minimum, maximum 객체지향프로그래밍 강원대학교

String Concatenation (문자열 연결) Use the + operator: 문자열을 다른 값과 + 연산자로 연결하면 다른 값은 자동으로 문자열로 변환됨 String name = "Dave"; String message = "Hello, " + name; // message is "Hello, Dave" String a = "Agent"; int n = 7; String bond = a + n; // bond is “Agent7” 객체지향프로그래밍 강원대학교

Concatenation in Print Statements 아래 두 프로그램은 동일 결과 System.out.print("The total is "); System.out.println(total); System.out.println("The total is " + total); 객체지향프로그래밍 강원대학교

Converting between Strings and Numbers Convert to number: Convert to string: String str = “35”; String xstr = “12.3”; int n = Integer.parseInt(str); double x = Double.parseDouble(xstr); int n = 10; String str = "" + n; str = Integer.toString(n); 객체지향프로그래밍 강원대학교

Substrings String 클래스의 메소드 String greeting = "Hello, World!"; String sub = greeting.substring(0, 5); // sub is "Hello" inclusive exclusive 객체지향프로그래밍 강원대학교

Reading Input – Scanner 클래스 Scanner in = new Scanner(System.in); System.out.print("Enter quantity: "); int quantity = in.next(); Scanner 인스턴스를 만들고 이 객체에 적절한 입력 메소드 호출 next reads a word (until any white space) nextLine reads a line (until user hits Enter) 객체지향프로그래밍 강원대학교

객체를 생성하기 위해서는 키워드 new 생성자를 사용 Rectangle r = new Rectangle(1, 1, 2, 3); 그러나 String 객체만은 예외적으로 String s = "스트링“ 과 같이 간편하게 생성하는 것도 가능 특수문자 new line - “\n“ 탭 - ”\t“ 따옴표 - ”\“” 객체지향프로그래밍 강원대학교

현재시각 알아내는 법 import java.util.Date; Date d = new Date(); String s = d.toString() System.out.println(s); Sat Mar 22 11:42:02 KST 2008 객체지향프로그래밍 강원대학교

JPanel 속 부품 배치 기본적으로는 옆으로 나란히 배치 (FlowLayout) 너비가 모자라면 아래로 내려옴 세로 배치 방법 JPanel panel = new JPanel(); panel.setLayout(new GridLayout(0, 1)); 혹은 panel.setLayout(new BoxLayout(container, BoxLayout.X_AXIS)); 객체지향프로그래밍 강원대학교

입력 값을 검사하는 법 Scanner scanner = new Scanner(System.in); String id = scanner.next(); if (id.matches("[12]")) ... 정규식 (regular expression) [a-z] 객체지향프로그래밍 강원대학교

이렇게 써도 된다. Color c = panel.getBackground(); if(c.equals(Color.black)) ... if(panel.getBackground().equals(Color.black)) ... 객체지향프로그래밍 강원대학교

경과 시간 측정하는 법 long start = System.currentTimeMillis(); .... long duration = (System.currentTimeMillis()-start)/1000; 객체지향프로그래밍 강원대학교

그래픽 프로그램에서 frame.repaint(); 프레임을 새로 그려줌 그 과정에서 프레임 내에 있는 부품들도 모두 새로 그림 프레임은 시스템이 프레임의 paintComponent 메소드를 호출해 줌으로써 새로 그려짐 부품들이 새로이 그려지는 것도 시스템이 부품들의 paintComponent 메소드를 호출해 주는 것임 객체지향프로그래밍 강원대학교

그래픽 프로그램에서 System.exit(0); 프로그램과 프로그램에 의해 그려진 창을 모두 종료함 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 프로그램에 의해 그려진 프레임 창을 종료하면 프로그램도 함께 종료되게 해 줌 객체지향프로그래밍 강원대학교

switch 문장 형식 switch (expr) { // expr는 정수나 char 등의 타입! case c1: statements // do these if expr == c1 break; case c2: statements // do these if expr == c2 case c3: case c4: // Cases can simply fall thru. statements // do these if expr == any of c's . . . default: statements // do these if expr != any above } 객체지향프로그래밍 강원대학교