PowerPoint 프레젠테이션

Similar documents
JAVA PROGRAMMING 실습 07. 상속

JAVA PROGRAMMING 실습 08.다형성

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

PowerPoint Presentation

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

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

PowerPoint Presentation

PowerPoint 프레젠테이션

Microsoft PowerPoint - 2강

PowerPoint 프레젠테이션

C++ Programming

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

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

Design Issues

JAVA PROGRAMMING 실습 05. 객체의 활용

5장.key

<4D F736F F F696E74202D205B4A415641C7C1B7CEB1D7B7A1B9D65D35C0E5BBF3BCD3B0FAB4D9C7FCBCBA>

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint Presentation

PowerPoint Presentation

제11장 프로세스와 쓰레드

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

PowerPoint 프레젠테이션

PowerPoint Presentation

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

Microsoft PowerPoint - 5장

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

No Slide Title

Microsoft PowerPoint - java2 [호환 모드]

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap11

설계란 무엇인가?

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

Microsoft PowerPoint - Chapter 6.ppt

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

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

비긴쿡-자바 00앞부속

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

PowerPoint Template

PowerPoint Presentation

Slide 1

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

C++ Programming

Microsoft PowerPoint 장강의노트.ppt

오버라이딩 (Overriding)

Microsoft Word - EEL2 Lab4.docx

쉽게 풀어쓴 C 프로그래밍

자바 프로그래밍

슬라이드 1

PowerPoint Presentation

슬라이드 1

JAVA PROGRAMMING 실습 05. 객체의 활용

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

슬라이드 1

PowerPoint 프레젠테이션

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

PowerPoint Presentation

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - 6주차.pptx

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

Microsoft PowerPoint - java1 [호환 모드]

PowerPoint Template

PowerPoint Template

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

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

Microsoft PowerPoint - Lect04.pptx

쉽게 풀어쓴 C 프로그래밍

01-OOPConcepts(2).PDF

Microsoft PowerPoint - Java7.pptx

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

05-class.key

int total = 0; for( int i=1; i<=5; i++ ) { for( int j=1; j<=i; i++ ) { total ++; System.out.println( total ); 대구분 : 객체와 Class 소구분 : 객체생성과사용 / Class 선언

소프트웨어공학개론 강의 5: 객체지향개념 최은만동국대학교컴퓨터공학과

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

PowerPoint Presentation

Microsoft PowerPoint - CSharp-10-예외처리

C++ 기본문법 정리

Network Programming

PowerPoint Presentation

rmi_박준용_final.PDF

Cluster management software

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

쉽게 풀어쓴 C 프로그래밍

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

PowerPoint Presentation

ThisJava ..

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 09. 예외처리

슬라이드 1

PowerPoint Presentation

PowerPoint 프레젠테이션

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

Transcription:

Lab 4

ADT Design 클래스로정의됨. 모든객체들은힙영역에할당됨. 캡슐화 (Encapsulation) : Data representation + Operation 정보은닉 (Information Hiding) : Opertion부분은가려져있고, 사용자가 operation으로만사용가능해야함.

클래스정의의형태 public class Person { private String name; public int age; public Person() { public Person(String s) { name = s; public String getname() { return name; 생성자 : 클래스의이름과동일한메소드, 클래스의객체가생성될때호출되는메소드메소드 : 실행가능한함수, 객체의행위를구현메소드오버로딩 : 1 메소드이름동일 2 메소드인자의개수가서로다르거나, 메소드인자의타입이서로달라야함. 3 리턴타입만다른경우에는에러

객체의생성 public static void main (String args[]) { Person aperson; aperson = new Person( 홍길동 ); aperson.age = 30; String s = aperson.getname(); 객체에대한레퍼런스변수 aperson 을선언한뒤, new 를통해서 Person 객체를생성하고있다.

멤버접근지정자 멤버에접근하는클래스 멤버의접근지정자 default private protected public 같은패키지의클래스 O X O O 다른패키지의클래스 X X X O

멤버접근지정자 public 인 name 에대해서는바로값지정이가능하지만, private 으로선언된 age 의경우바로선언하려고하면에러가발생한다. 이는 private 의경우, 서로다른클래스에선언되어있기때문이다. 때문에클래스내부에서 get/set 메소드를만들어서접근해야한다. class Person { public String name; private int age; int num; public int getage() { return age; public void setage(int value) { age = value; public class Access { public static void main(string[] args) { Person aperson = new Person(); aperson.name = 홍길동 ; aperson.setage(20); aperson.num = 10;

Class Hierarchy - Casting 객체의타입변환 업캐스팅 : 서브클래스객체가슈퍼클래스타입으로변환되는것 다운캐스팅 : 업캐스팅된것을다시원래대로되돌리는것, 명시적으로타입지정이필요.

Class Hierarchy - Casting

Class Hierarchy - Casting C++ 의경우 GUN 을 weapon 으로바꾸었다기보다는메모리에는 GUN 고대로존재하되 ( 동적할당 ) 그시작점을가리키는포인터를부모로가리키겠다는의미이다.

class Person { String name; String id; public Person(String name) { this.name = name; class Student extends Person { String grade; String department; public Student(String name) { super(name); public class Casting { public static void main(string[] args) { Person p = new Student(" 홍길동 "); // 1 업캐스팅 System.out.println(p.name); p.grade = "A"; p.department = " 컴퓨터 "; Student s = (Student)p; // 2 다운캐스팅 System.out.println(s.name); s.grade = "A";

Class Hierarchy - Overriding 슈퍼클래스와서브클래스의메소드사이에발생하는관계. 슈퍼클래스의메소드를동일한이름으로서브클래스에서재작성하는것. super 키워드를통해서슈퍼클래스에대한멤버와메소드에접근가능.

Class Hierarchy - Overriding 오버라이딩의조건 1 슈퍼클래스의메소드와완전히동일한메소드를재정의. 2 슈퍼클래스메소드의접근지정자보다접근의범위가좁아질수없음. 3 리턴타입만다를수없음.

Class Hierarchy - Overriding

Class Hierarchy - Overriding public class Overriding { public static void main(string[] args) { Person p = new Person(); Student st = new Student(); Person p1 = new Researcher(); Person p2 = st; p.who(); st.who(); p1.who(); p2.who(); 출력결과 : Person / Student / Researcher / Student Student 와 Researcher 의 who() 메소드는오버라이딩된형태이다. 그렇기때문에자식클래스에있는함수가실행된다.

Method Overloading vs Overriding 정의 Overloading 같은클래스나상속관계에서동일한이름의메소드중복작성 Overriding 서브클래스에서슈퍼클래스에있는메소드와동일한이름의메소드작성 관계같은클래스나상속관계상속관계 목적 조건 이름이같은여러개의메소드를중복정의하여사용의편리성향상 메소드이름동일, 메소드의인자의개수나인자의타입이달라야함. 서브클래스에서새로운기능의메소드를재정의 메소드의이름, 매개변수의형태등이모두동일 바인딩정적바인딩동적바인딩

Abstract Class 추상클래스의상속 추상클래스를상속받으면상속받은서브클래스는추상클래스가됨. 서브클래스가추상클래스가되지않기위해서는추상메소드를모두오버라이딩해야함.

Interfaces Abstract Class

Interfaces 추상클래스의한종류로, 다중상속이가능하게함. implements 키워드는인터페이스의추상메소드를클래스에서구현하는것을말함.

Interfaces 인터페이스의특징 1 추상클래스와다르게반드시추상메소드와상수만으로구성 2 모든메소드는 abstract public이며생략가능함. 3 상수도 public static final을생략하여선언가능함. 4 인터페이스의객체를생성할수없음. 5 다른인터페이스에상속될수있음. 6 인터페이스도레퍼런스변수의타입으로사용가능.

interface CanFight { void fight(); interface CanSwim { void swim(); interface CanFly { void fly(); class ActionCharacter { public void fight() { System.out.println("fight"); class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly { public void swim() { System.out.println("swim"); public void fly() { System.out.println("fly"); public class Adventure { public static void t(canfight x) { x.fight(); public static void u(canswim x) { x.swim(); public static void v(canfly x) { x.fly(); public static void w(actioncharacter x) { x.fight(); public static void main(string[] args) { Hero h = new Hero(); t(h); // Treat it as a CanFight u(h); // Treat it as a CanSwim v(h); // Treat it as a CanFly w(h); // Treat it as an ActionCharacter

interface Monster { void menace(); interface DangerousMonster extends Monster { void destroy(); interface Lethal { void kill(); class DragonZilla implements DangerousMonster { public void menace() { System.out.println("menace1"); public void destroy() { System.out.println("destory1"); interface Vampire extends DangerousMonster, Lethal { void drinkblood(); class VeryBadVampire implements Vampire { public void menace() { System.out.println("menace2"); public void destroy() { System.out.println("destroy2"); public void kill() { System.out.println("kill2"); public void drinkblood() { System.out.println("drinkBlood2");

public class HorrorShow { static void u(monster b) { b.menace(); static void v(dangerousmonster d) { d.menace(); d.destroy(); static void w(lethal l) { l.kill(); public static void main(string[] args) { DangerousMonster barney = new DragonZilla(); System.out.println("1"); u(barney); System.out.println("2"); v(barney); Vampire vlad = new VeryBadVampire(); System.out.println("3"); u(vlad); System.out.println("4"); v(vlad); System.out.println("5"); w(vlad); 인터페이스를만들때, 다중인터페이스상속이가능함. 인터페이스를통한다중상속이구현되었음을확인할수있음.

인터페이스 vs 추상클래스