8장 상속 ①.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

6 장 객체 - 지향 설계 ③. 목차 GUI 레이아웃  전화기 키 패드 전화기 키 패드 전화기 키 패드 모양의 GUI 를 만드는 Telephone.java, TelephonePanel.java 를 완성해 보자.  주석을 참고하여 TelephonePanel.java.
프로그래밍 개론 Ⅰ 제 3장. 클래스와 객체의 사용 ①.
5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
10. 예외 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
최윤정 Java 프로그래밍 클래스 상속 최윤정
7장 배열 ②.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
6장 객체-지향 설계 ①.
10장 예외 Lab 10-1.
제 4 장 클래스 작성 Lab 4- 2.
[INA470] Java Programming Youn-Hee Han
7장 배열 ②.
Power Java 제10장 배열.
자바 5.0 프로그래밍.
6장 객체-지향 설계 ②.
Lesson 5. 레퍼런스 데이터형.
4.1 자바 응용 프로그램 분석 4.2 식별자(identifier)와 예약어 4.3 변수와 자료형
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 9. 예외처리.
Lesson 6. 형변환.
1. C++ 시작하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
Lesson 7. 클래스와 메소드 - 1.
제 4 장 클래스 작성 4-1 LAB.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
자바 5.0 프로그래밍.
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
7장 인터페이스와 추상 클래스.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
어서와 Java는 처음이지! 제4장 배열 IT응용시스템공학과 김형진 교수.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Power Java 제11장 상속.
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
객체기반 SW설계 팀활동지 4.
2nd day Indexing and Slicing
OpenCV 설정 2.21 만든이 딩딩.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
함수, 모듈.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
프로그래밍 개론 Ⅰ 제 1장 . 서론 ②.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
6 객체.
SPL-Duino 블록 편집기 이용하기 전류센서 블록 만들기 SPL-Duino 블록 편집기를 실행합니다.
Presentation transcript:

8장 상속 ①

목차 상속 연습 다양한 개 만들기 정렬된 정수 리스트 만들기 시험 문제 내기 운동 선수 비교하기

다양한 개 만들기 다음의 프로그램을 아래와 같이 수정하시오. DogTest.java에 Yorkshire와 Labrador를 생성하고 출력하는 코드를 삽입한다. 에러가 발생할 것이다. 이를 수정하라. 힌트 : Labrador의 생성자를 수정한다. DogTest.java에 Yorkshire와 Labrador의 평균무게를 출력하는 코드를 삽입한다. 힌트 : Yorkshire에 필요한 변수와 메소드를 추가한다. Dog.java에 abstract int avgBreedWeight() 를 추가한다. 힌트1 : Dog을 추상 클래스로 만든다. 힌트2 : 추상클래스로부터는 객체를 생성할 수 없다.

다양한 개 만들기 – DogTest.java // **************************************************************** // DogTest.java // // 개를 생성하고, 그것이 짖는 것을 간단히 테스트하는 클래스 public class DogTest { public static void main(String[] args) Dog dog = new Dog("Spike"); System.out.println(dog.getName() + " says " + dog.speak()); }

다양한 개 만들기 – Dog.java // **************************************************************** // Dog.java // 개의 이름을 유지하고, 그것이 짖을 수 있도록 하는 클래스 public class Dog { protected String name; // ------------------------------------------------------------ // 구성자 - 개의 이름을 저장한다. public Dog(String name) { this.name = name; } // 개의 이름을 반환한다. public String getName() { return name; // 개가 짖는 내용을 문자열로 반환한다. public String speak() { return "Woof";

다양한 개 만들기 – Yorkshire.java // **************************************************************** // Yorkshire.java // // 요크셔테리어에 대한 정보를 정보를 갖는, Dog을 상속한 클래스 // Dog의 speak 메소드를 재정의한다. public class Yorkshire extends Dog { public Yorkshire(String name) super(name); } // ------------------------------------------------------------ // 작게 짖는다. - Dog의 speak 메소드를 재정의한다. public String speak() return "woof";

다양한 개 만들기 –Labrador.java // **************************************************************** // Labrador.java // 래브라도 리트리버에 대한 정보를 갖는, Dog을 상속한 클래스 // Dog의 speak 메소드를 재정의하고, // 이 종의 평균 무게에 대한 정보를 포함시킨다. public class Labrador extends Dog { private String color; // black, yellow, 또는 chocolate private int breedWeight = 75; public Labrador(String name, String color) { this.color = color; } // ------------------------------------------------------------ // 크게 짖는다. - Dog의 speak 메소드를 재정의한다. public String speak() { return "WOOF"; // 무게를 반환한다. public int avgBreedWeight() { return breedWeight;

정렬된 정수 리스트 만들기 다음의 프로그램은 IntList라는 정수 리스트를 제공한다. 이 클래스를 확장하여 정렬된 정수 리스트인 SortedIntList를 만드시오. 이 리스트는 항상 작은 것부터 큰 순으로 정렬된 순서의 리스트를 갖는다. 새로운 값을 리스트에 추가할 시에, 정확히 순서에 맞는 위치에 삽입할 수 있도록 add 메소드를 재정의한다. 리스트를 처음부터 쭉 읽어나가면서 추가하려는 값이 들어갈 위치를 찾는다. 찾은 위치 이후에 있는 값들을 모두 한 칸씩 뒤로 민다. 그리고 그 위치에 새로운 값을 저장한다. SortedIntList를 테스트해 볼 수 있도록 ListTest.java를 수정해보자.

정렬된 정수 리스트 만들기 – IntList.java // **************************************************************** // IntList.java // // 목록에 정수를 추가하는 메소드와 목록의 내용을 인덱싱하여 반환하는 // toString 메소드를 가지고 있는 (정렬되지 않는) 정수 목록 클래스 public class IntList { protected int[] list; protected int numElements = 0; //------------------------------------------------------------- // 구성자 - 주어진 크기의 정수 목록을 생성한다. public IntList(int size) list = new int[size]; }

정렬된 정수 리스트 만들기 – IntList.java //------------------------------------------------------------- // 목록에 정수를 추가한다. // 만약 목록이 꽉 찼다면, 메세지를 출력하고 아무런 일도 하지 않는다. public void add(int value) { if (numElements == list.length) System.out.println("Can't add, list is full"); else list[numElements] = value; numElements++; } // 목록의 내용을 인덱싱하여 문자열로 반환한다. public String toString() String returnString = ""; for (int i=0; i<numElements; i++) returnString += i + ": " + list[i] + "\n"; return returnString;

정렬된 정수 리스트 만들기 – ListTest.java // **************************************************************** // ListTest.java // // IntList를 생성하고, 그것에 약간의 정수들을 넣어보고, // 그 목록을 출력해보는 간단한 테스트 프로그램 public class ListTest { public static void main(String[] args) IntList myList = new IntList(10); myList.add(100); myList.add(50); myList.add(200); myList.add(25); System.out.println(myList); }

시험 문제 내기 다음과 같이 추상클래스 TestQuestion을 만든다. 문제를 저장하기 위한 protected String 변수를 만든다. 문제를 읽기 위한 protected abstract void readQuestion() 메소드를 만든다. 이 추상클래스를 상속하여 다음과 같은 두 가지 클래스를 만든다. Essay 클래스 요구되는 답이 몇 줄인지 저장하기 위한 int형 변수가 필요하다. MultiChoice 클래스 여러 개의 선택 문항을 저장하기 위한 String 배열이 필요하다. 두 클래스에 각각 readQuestion() 메소드와 toString() 메소드를 적절히 정의한다.

시험 문제 내기 이를 테스트해 보기 위한 WriteTest 클래스를 만든다. 여러 개의 문제를 저장하기 위한 TestQuestion 배열을 만든다. 다음과 같이 사용자로부터 문제를 읽어 들이고, 그 내용을 출력한다. 문제 개수를 입력 받는다. 문제 개수만큼 아래의 내용을 입력 받는다. 문제의 종류를 입력 받는다. (Essay : e, MutiChoice : m) Essay라면, 요구되는 답의 줄 수와 문제를 입력 받는다. MultiChoice라면, 보기의 개수와 문제를 입력 받는다. 그리고 보기 개수만큼 보기 내용을 입력 받는다.

시험 문제 내기 – 입력 예시 3 e 5 Why does the constructor of a derived class have to call the constructor of its parent class? m 4 Which of the following is not a legal identifier in Java? Guess2 2ndGuess _guess2_ Guess What does the “final” modifier do?

운동선수 비교하기 다음의 프로그램은 두 명의 운동선수 정보를 입력 받아, 그들이 같은 선수인지 비교한다. 주석으로 처리된 부분을 완성해 보자. 두 명의 운동선수 정보를 입력 받는다. equal() 메소드를 이용하여 두 선수가 같은 선수인지 비교하고 그 결과를 출력한다. 팀과 유니폼번호가 같다면 같은 선수라고 판단하도록 equal() 메소드를 재정의해 보자. 재정의하는 equal() 메소드는 Player 클래스를 매개변수로 받아들여야 할 것이다. 자신과 매개변수로 받아들인 선수가 같은지 비교한다.

운동선수 비교하기 – Player.java // ********************************************************** // Player.java // // 운동선수에 대한 정보를 저장하는 Player 클래스를 정의한다. import java.util.Scanner; public class Player { private String name; private String team; private int jerseyNumber; //----------------------------------------------------------- // 운동선수의 이름, 팀, 저지 넘버를 읽어들인다. public void readPlayer() Scanner scan = new Scanner(System.in); System.out.print("Name: "); name = scan.nextLine(); System.out.print("Team: "); team = scan.nextLine(); System.out.print("Jersey number: "); jerseyNumber = Scan.nextInt(); }

운동선수 비교하기 – ComparePlayers.java // ************************************************************** // ComparePlayers // // 두명의 운동선수에 대한 정보를 읽어들이고, 그들이 같은 선수를 // 표현하고 있는 것인지 아닌지 말해준다. import java.util.Scanner; public class ComparePlayers { public static void main(String[] args) Player player1 = new Player(); Player player2 = new Player(); Scanner scan = new Scanner(); // 첫번째 선수의 정보를 읽어들인다. // 두번째 선수의 정보를 읽어들인다. // 두명의 선수를 비교하고, 그것들이 같은 선수를 표현한 것인지 아닌지 // 말해주는 메세지를 출력한다. }