160 likes | 262 Views
Java Basic Program. Data Warehousing Lab. 윤 혜 정. Object. class. instance of class variable + method 로 구성. template for Object • attribute + behavior 로 구성 특성 동작. 객체 지향 프로그래밍. Object 와 Class 객체의 정의 (1) 감각에 의하여 인지될 수 있는 어떤 것 (2) 생각과 느낌, 행도의 대상이 되는 정신적이거나 물리적인 어떤 것
E N D
Java Basic Program Data Warehousing Lab. 윤 혜 정
Object class instance of class variable + method로 구성 template for Object •attribute + behavior로 구성 특성 동작 객체 지향 프로그래밍 • Object와 Class • 객체의 정의 (1) 감각에 의하여 인지될 수 있는 어떤 것 (2) 생각과 느낌, 행도의 대상이 되는 정신적이거나 물리적인 어떤 것 • 추상화(abstract) • 일반적으로 추상화는 어떤 물체(object)에서 주된 특징을 부각시켜서 표현하고 나머지 부분은 과감하게 생략하는 것을 의미한다.
객체 지향 프로그래밍 • 2. 클래스의 정의 Primitive dataType : int a ; //byte 메모리 할당 a=7; //7이 메모리에 저장됨 NonPremitive dataType : Account x; //AccountObject를 point 할 수 //있는 레퍼런스 변수생성 x=new Account(); //실제 Account Object생성하고 //그 오브젝트 주소를 x에 할당 x Account Class DataOnly { int x; float f; ------ field boolean b; public date(){} ------- method }
초기화와 클린업 • 1. 생성자로 초기화 • 자바에서는 생성자(constructor)라 부르는 특별한 메소드를 제공하여 모든 객체의 초기화를 보장하고 있다. • 생성자는 객체가 생성될 때 가장먼저 호출되는 메소드이며, 생성자의 이름은 클래스의 이름과 같다. • 아무것도 리턴하지 않고, void조차도 붙이지 않는다. class Manager extends Employee { String name; String salary; Manager(String name) { this(name, 100); } Manager(String name, Long salary) { this.name = name; this.salary = salary; } }
초기화와 클린업 2. 메소드 오버로딩 • 오버로딩이란 한 클래스 내에 똑 같은 이름의 메소드 사용 • 자바에서 메소드 오버로딩이 꼭 필요한 곳이 바로 생성자임 • 생성자는 클래스와 이름이 같으므로 한 가지 이름만 갖는다. 메소드 오버로딩을 하려면 파라미터의 수나 Type을 다르게 주어야 한다. • 3. 멤버의 초기화 class Tag { Tag(int marker) {System.out.println("Tag(" + marker +")"); } } class Card {//변수는 클래스 내에 어디에 있는지 항상 제일 먼저 초기화된다. Tag t1 = new Tag(1); //---(1) Card() { System.out.println("Card()"); t3 = new Tag(33);//---(2) } } void f() { int i; i++; }
내부 구현 감추기 • Package: 라이브러리 유닛 • 자바의 패키지(Package)는 서로 관계 있는 클래스들을 모아 놓은 라이브러리를 말하며 물리적으로는 디렉토리를 나타낸다. 패키지의 이름은 도메인 명을 역순으로 사용한다. • 2. 자바의 접근 지시자 • friendly • public • private • protected package com.dwlab.m125; import java.util.*; class 선언 부분
클래스 재사용하기 class Employee { String name; Date hireDate; Date dateOfBirth; public work() { } } class Manager extends Employee { String department; Employee subordinamtes []; public work() { } } • 상속 • 상속이란 기존 객체에 또다른 기능이나 특성을 추가하여 새로운 객체로 만드는 것을 의미한다.
클래스 재사용하기 • 1.1 자료의 상속과 메소드의 상속 • 1.2 오버라이딩(Overriding) Heap Stack public class Test c1 { pubic static void main(String [] args) car :: drive, turnon, { Car c1 = new Car(); turnoff, accerate Taxi t1 = new Taxi(); t1 } } taxi :: takeIn, takeoff Handle, frame, engine, seat Handle, frame, engine, seat, taxinumber
클래스 재사용하기 • 2.Inner Class • 클래스 내부에 또 다른 클래스가 정의된 경우 이를 내부 클래스(Inner Class)라 한다. • 내부 클래스를 이용하면, 논리적인 관점에서 합해질 수 있는 클래스를 하나로 묶을 수 있으며, 내부 클래스를 포함하는 외곽(outer)클래스에서는 내부 클래스의 접근을 제어할 수 있다.
Inner Class Class MyOuter { private int outVar = 1; class MyInner { int inVar = 2; static int s1 = 3; //라인 1 error! int innerMethod() { inVar = outVar; //라인 2 if(this.inVar == MyOuter.this.outVar) //라인3 inVar = 0; return invar; } } int outerMethod() { MyInner inobj = new MyInner(); return inobj.innerMethod(); public static void main(String args []) { //MyInner tobj = new MyInner(); //static으로 선언된 메소드에서는 내부 // 클래스를 사용할 수 없다. MyOuter mobj = new MyOuter(); Mobj.outerMethod(); } }
다형성 • 1. 클래스간의 형변환 • 클래스 간에 서로 상속관계를 맺고 있는 경우에는 특별한 형 변환 연산자를 정의하지 않아도 서로 간의 형 변환이 가능하다. • 1.1 묵시적 형변환 Public class Animal { 동물의 속성 동물의 행위 메소드 } Public class Man extends Animal { 사람의 속성 사람의 행위 메소드 } Animal a1 = new Animal(); Man m1 = new Man(); Animal a2 = new Man(); a2 동물의 속성.. 사람의 속성
다형성 • 1.2 명시적 형변환 • 명시적 형변환은 형변환 연산자를 사용하여 변환을 강제적으로 수행하는 방법 Class A { int i; } Class B extends A { int j; } public class Test { public static void main(String [] args) { A a = new A(); B b = new B(); a = new B(); b =(B) a; } }
다형성 • 2. 다형성 • 다형성(Polymorphism)이란 같은 인터페이스에 의하여 서로 다른 동작이 일어나는 것을 의미한다. GraphicObject draw(); Circle draw(); Rect draw(); Public class Polymorphism { public static void main(String [] args) { callTest(new Circle()); callTest(new Rect()); } public static void callTest(GraphicObject go) { go.draw(); }
추상 클래스와 인터페이스 • 추상클래스 • 여러 클래스들이 공통의 인터페이스를 사용하도록 하고 싶을 때 추상클래스를 생성한다. • Abstract메소드는 메소드의 기본적인 특성만을 선언해 놓은 메소드로 메소드의 몸체가 없는 머리부분만 존재하는 것이다. abstract class GraphicObject { abstract public void draw(); }
추상 클래스와 인터페이스 • 2. 인터페이스 • 인터페이스는 명세서이다. • 인터페이스의 사용 • 문법적으로 인터페이스는 메소드의 선언과 static final변수(상수)만을 가질 수 있다. Animal Breath() extends <<Interface>> Mammal breedYoung() Fish swim() extends implements Man Breath()
배열 • 배열이란 같은 자료형의 데이터를 여러 개 저장하기 위한 메모리 공간을 말한다. 자바에서는 배열을 하나의 객체로써 처리한다. 배열의 선언과 생성 int[] a; // 또는int a[]; a = new int[10]; 배열의 선언, 생성, 초기화 int[] a = { 1, 2, 3 }; 배열의 길이: a.length