Advanced Class Design in Java Java Packages Week #6 Jarungjit Parnjai

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างโปรแกรมภาษา JAVA
Advertisements

Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
Lab Part Nattee Niparnan
Introduction to C Introduction to C.
โครงสร้างโปรแกรมภาษา C
Component องค์ประกอบของ GUI.
การจัดการความผิดพลาด
ภาษาคอมพิวเตอร์ กฎเกณฑ์เกี่ยวกับคำศัพท์ ไวยากรณ์ และ หลักภาษาในการเขียนคำสั่งงานให้คอมพิวเตอร์ทำงานอย่างใดอย่างหนึ่งให้กับเราได้ มีหลากหลายชนิดต่างๆ กัน.
Stack.
Object and classes.
ลักษณะการทำงานของ Stack
05_3_Constructor.
Object Oriented Programing
โปรแกรมย่อย : Pascal Procedure
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
ครั้งที่ 7 Composition.
หลักการเชิงวัตถุ อาจารย์ศิริพร ศักดิ์บุญญารัตน์
Selected Topics in IT (Java)
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Network programming Asst. Prof. Dr. Choopan Rattanapoka
การสืบทอด (Inheritance)
บทที่ 3 Class and Object (1) การสร้างและการใช้งานคลาส
คลาสและวัตถุ (2) (Class & Object)
 เป็นเมธอดที่มีคุณลักษณะของ Polymorphism รูปแบบหนึ่ง โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกัน  คลาสลูกสามารถเขียนทับ เมธอดของคลาสแม่ได้
บทที่ 1 หลักการเขียนโปรแกรมเชิงวัตถุ
คลาสและวัตถุ (3) (Class & Object)
คลาสและวัตถุ (2) (Class & Object)
คลาสและวัตถุ (4) (Class & Object)
คลาสและวัตถุ (3) (Class & Object). w5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 24, 25 as5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 23 2.
บทที่ 4 Method (1).
OOP (Object-Oriented Programming)
สตริง (String).
Inheritance การสืบทอดคลาส
String Class มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
อาร์เรย์ หรือแถวลำดับ (Array)
input from keyboard มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 15 มิถุนายน 2550 Structure Programming มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 3 มิถุนายน 2550 Method of Class มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 22 มิถุนายน 2550 ความผิดพลาดที่พบ บ่อย มหาวิทยาลัยเนชั่น.
บทที่ 6 เมธอด.
JAVA PROGRAMMING PART IV.
สแตค(stack) โครงสร้างข้อมูลแบบ Stack - การสร้าง Stack
คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะทำที่ปลายใดปลายหนึ่งของ Queue ในขณะที่การลบข้อมูลออกจากคิว.
โปรแกรมภาษาจาวาเบื้องต้น Basic Java Programming 3(2-2-5)
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
Object Oriented Programming Handling Exceptions
Method of Class อ.สุพจน์ สิงหัษฐิต
Object-Oriented Programming
บทที่ 3 Class and Object (2).
บทที่ 4 คำสั่งควบคุมแบบมีทางเลือก
Java collection framework
Java Programming Java Structure and Datatype,Variable
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
สายอักขระ เขียนโปรแกรม Java เบื้องต้น.
Java Network Programming 1
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
TECH30201 Object-Oriented Programming
Inheritance และ Encapsulation.  การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่ มีอยู่แล้ว  คลาสใหม่จะนำแอตทริบิวต์และเมธอดของ คลาสเดิมมาใช้  เป็นการถ่ายทอดคุณสมบัติจากคลาสหนึ่งสู่อีก.
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การจัดการกับความผิดปกติ
Variable, Data type, Expression, Operators Data input, Data output
บทที่ 6 ตัวแปรชุดและ สตริง รายวิชา ง การเขียนโปรแกรมเชิง วัตถุ Reading: ใบความรู้ บทที่ 6.
Chapter 6 Abstract Class and Interface
Object and classes.
Package การสร้าง Package การใช้งาน Package อ.ธวัฒน์ชัย.
Chapter 5 การจัดการข้อผิดพลาด (Exception Handling)
Starting JAVA : JAVA PROGRAMMING (การ โปรแกรมภาษาจาวา) มัลลิกา เกลี้ยงเคล้า | SC1419.
Method and Encapsulation
ใบสำเนางานนำเสนอ:

Advanced Class Design in Java Java Packages Week #6 Jarungjit Parnjai Object Oriented Programming Advanced Class Design in Java Java Packages Week #6 Jarungjit Parnjai

Modularity Modularity ก่อให้เกิดพื้นฐานของการที่โปรแกรมถูกพัฒนา และผลลัพธ์ของการบำรุงรักษา software high cohesion : ความสัมพันธ์กันอย่างใกล้ชิดระหว่าง หน่วย (unit) ภายใน software module low coupling : ความขึ้นตรงต่อกันและกัน แบบไม่ใกล้ชิดระหว่า software modules ที่แตกต่างกัน

Modularity หน่วย (Unit) ของ software module method จัดเป็น programming unit ที่เล็กที่สุด class เป็น unit ที่ใหญ่ขึ้นถัดมา methods ที่เกี่ยวเนื่องสัมพันธ์กัน จะถูกจัดไว้ใน class definition เดียวกัน package ใน Java ก่อให้เกิดที่บรรจุ software สำหรับคลาสต่างๆ ที่มีหน้าที่การทำงานที่เกี่ยวข้องกัน

Packages in Java package ถูกประกาศโดยใช้คำเฉพาะ “package” คลาสที่เกี่ยวเนื่องสัมพันธ์ถูกจัดไว้ใน package เดียวกัน คลาส Point ถูกกำหนดไว้ใน “Point.java” คลาส Circle ถูกกำหนดไว้ใน Circle.java ถ้าไม่มีคำเฉพาะ “package” คลาสภายใต้ directory เดียวกันจะจัดไว้ใน package เดียวกันที่ไม่มีการตั้งชื่อ package geometry; public class Point { … … } same package geometry.Point package geometry; public class Circle { … … } geometry.Circle

The “package” Statement package package_name1[.package_name2]; โดยมีเงื่อนไขดังนี้ ประกาศไว้ที่ตำแหน่งเริ่มต้นของไฟล์เท่านั้น ประกาศได้เพียง 1 package ต่อ 1 source file ตัวอย่าง “Bank.java” และ “Customer.java” package banking; public class Bank { : } package banking; public class Customer { : }

Software Package ช่วยในการจัดการ Software ขนาดใหญ่ โดยรวมกลุ่มของคลาส ไว้ใน “Package”

Class Reference in Package ใช้ชื่อเต็มของ คลาส package-name.ClassName; เช่น geometry.Point; หรือ banking.Bank; import คลาส และใช้เฉพาะชื่อคลาส import คลาสเดียวภายในคลาสที่ระบุ import package-name.ClassName; เช่น import geometry.Point; import ทุกคลาสที่อยู่ภายใน package import package-name.*; เช่น import geometry.*; คลาส geometry.Point จะถูกอ้างอิงด้วย Point คลาส geometry.Circle จะถูก import เข้ามาด้วย

Visibility in Package นอก Package มองเห็นเฉพาะคลาสที่ประกาศเป็น public by default มองเห็นคลาสที่ไม่ได้ประกาศ modifier เฉพาะภายในpackage เช่น คลาส Point และ Line ถูกกำหนดไว้ใน “Point.java” คลาส DemoClient ถูกกำหนดไว้ใน “DemoClient.java” package geometry; public class Point { … … } class Line { … … } มองเห็นเฉพาะภายใน package “geometry” import geometry.*; public class DemoClient { … … } Import ทุกคลาสภายใต้ package “geometry” แต่ใช้ งานเฉพาะคลาส Point

Preventing Name Collision packages จัดเป็นเครื่องมือที่ใช้ในการแบ่งส่วน name space และป้องกัน preventing name collisions คลาสใน packages ต่างกันสามารถมีชื่อเดียวกันได้ คลาสเหล่านั้นสามารถรวมไว้ในไฟล์เดียวกันโดยไม่ก่อให้เกิด name collision หรือ package space; public class Point { … … } คลาสชื่อเดียวกัน แต่อยู่ต่างคลาส geometry.Point gPoint = new geometry.Point( … … ) space.Point sPoint = new space.Point( … … ) อ้างอิงคลาส Point ที่ถูกประกาศ ไว้ภายใต้ package geometry import geometry.Point; gPoint = new Point( … … ) space.Point sPoint = new space.Point( … … )

Directory Structure source และ class จะต้องจัดไว้ใน directory ที่โครงสร้าง directory ตรงกับโครงสร้างของ package คลาส Foo ถูกกำหนดไว้ใน source file ที่ชื่อ Foo.java Foo.java ถูกเก็บไว้ใน compile execute โปรแกรม package package1.package2; public class Foo { … … } X:\myjava\oop\package1\package2\Foo.java X:\myjava\oop\package1\package2 > javac Foo.java X:\myjava\oop> java package1.package2.Foo

CLASSPATH compiler และ interpreter จะค้นหา CLASSPATH สำหรับ class files ที่ต้องการใช้ คลาส Foo ถูกกำหนดไว้ในไฟล์ Foo.java Foo.class ถูกเก็บไว้ใน กำหนด class path execute โปรแกรม package package1.package2; public class Foo { … … } X:\myjava\oop\package1\package2\Foo.class X:\anywhere > set CLASSPATH=.;X:\myjava\oop X:\anywhere > java package1.package2.Foo

Java API Packages java.lang ประกอบด้วย Java classes ที่จำเป็นสำหรับการประมวลผล Java programs (import ได้โดยไม่ต้องประกาศ) java.io ประกอบด้วย Java classes ที่ใช้สำหรับการจัดการ input และ output java.net ประกอบด้วย Java classes ที่เกี่ยวกับ networking java.util ประกอบด้วย Java classes สำหรับหน้าที่การทำงานทั่วไปเช่น list collections หรือ data representation java.awt ประกอบด้วย Java classes ที่ใช้เป็นAbstract Windowing Toolkit java.applet ประกอบด้วย Java classes ที่ใช้ในการสร้าง applet

Example :TestBanking public class TestBanking { public static void main(String[ ] args) { Banking.Bank bank; bank = new Banking.Bank( ); Banking.Customer customer; bank.addCustomer("Julia", "Roberts"); customer = bank.getCustomer(0); customer.addAccount(new BankAccount(500.00)); customer.addAccount(new BankAccount(200.00)); bank.addCustomer("David", "Beckham"); customer = bank.getCustomer(1); customer.addAccount(new BankAccount(350.00)); }

Example : TestBanking import Banking.*; public class TestBanking { public static void main(String[ ] args) { Bank bank; bank = new Bank( ); Customer customer; bank.addCustomer("Julia", "Roberts"); customer = bank.getCustomer(0); customer.addAccount(new BankAccount(500.00)); customer.addAccount(new BankAccount(200.00)); bank.addCustomer("David", "Beckham"); customer = bank.getCustomer(1); customer.addAccount(new BankAccount(350.00)); }

Directory Layout and Package Source Code ถูกเก็บไว้อยู่ใน directory ที่ตั้งชื่อตามชื่อ package bytecode ที่ได้จากการ compile Source Code ถูกเก็บไว้ใน directory อื่น

Package and Sub-Package

Software Development & Deployment

Example : Stack Case Study : คลาส Stack1 ประกาศ package package stack1; public class Stack { private Item[ ] contents; private int top; public Stack( ) { contents = new Item[10]; top = -1; } // End default constructor public Stack(int aSize) { contents = new Item[aSize]; } // End second constructor … … } // End Stack class Stack ถูก implement โดยใช้ array Item IntItem FloatItem

Example : Stack public Item pop( ) { if (empty( )) { System.err.println("stack underflow"); return(new intItem(0)); } else { Item x = contents[top--]; return(x); } } // End pop public void push(Item x) { if (full( )) System.err.println("stack overflow"); else { contents[++top] = x; System.out.println("Pushed "+x.getValue( )+" into Stack"); } // End push

Example : Stack public int size( ) { return(top+1); } // End size public boolean empty( ) { return(size( ) == 0); } // End empty public boolean full( ) { return(size( ) == contents.length); } // End full

Example : StackDemoClient import stack1.*; public class StackDemoClient1 { public static void main(String[ ] argv) { int i, numberOfItem; numberOfItem = Integer.parseInt(argv[0]); Stack s = new Stack( ); for (i = 0; i < numberOfItem/2; i++) s.push(new IntItem(i)); for (i = numberOfItem/2; i < numberOfItem; i++) s.push(new FloatItem((float) i)); for (i = numberOfItem; i > 0; i--) System.out.println("Item popped = " + (s.pop()).getValue()); } // End main } // End StackDemoClient1 z รับ input จาก Command line argument กฎ ของ Subtype Return ค่า instance ของ item

Summary Java Packages