ปฏิบตัการทิี่ 1 - ttime.in.thgetarea(): float height base การส...

7
1 ดร.ธีระยุทธ ทองเครือ ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยขอนแก่น ปฏิบัติการที1 พื นฐาน Java และ JSP ชนิดข้อม ลพื ้นฐานของตัวแปร ชนิดข้อม ลพื ้นฐานของตัวแปร int 4 bytes short 2 bytes long 8 bytes byte 1 byte float 4 bytes double 8 bytes char 2 bytes boolean true, false 2 หมายเหตุ ชนิดข้อมูลพื นฐานของตัวแปรจะขึ นต้นด้วยตัวพิมพ์เล็ก Hello World Hello World 3 class Hello { public static void main(String[] args) { System.out.println("Hello World"); } } ชื่อคลาส ฟังก์ชัน main บอกจุดเริ มต้นโปรแกรม ฟังก์ชันแสดงข้อความออกทางหน้าจอ โครงสร้างควบค โครงสร้างควบค 4 if/else do/while for switch if(x==4) { // act1 } else { // act2 } int i=5; while(i!=0) { // act1 i--; } for(int i=0;i<=9;i++){ // act1 } char c=IN.getChar(); switch(c) { case ‘a’: case ‘b’: // act1 break; default: // act2 } while int i=5; do { // act1 i--; } while(i!=0);

Upload: others

Post on 23-Mar-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ปฏิบตัการทิี่ 1 - Ttime.in.thgetArea(): float height base การส บทอดคลาส คลาสท สร างข นบางคร งอาจจ

1

ดร.ธระยทธ ทองเครอภาควชาวทยาการคอมพวเตอร คณะวทยาศาสตร

มหาวทยาลยขอนแกน

ปฏบตการท 1พนฐาน Java และ JSP

ชนดขอมลพนฐานของตวแปรชนดขอมลพนฐานของตวแปรint 4 bytesshort 2 byteslong 8 bytesbyte 1 bytefloat 4 bytesdouble 8 byteschar 2 bytesboolean true, false

2

หมายเหต ชนดขอมลพนฐานของตวแปรจะขนตนดวยตวพมพเลก

Hello WorldHello World

3

class Hello {public static void main(String[] args) {

System.out.println("Hello World"); }

}

ชอคลาส ฟงกชน main บอกจดเรมตนโปรแกรม

ฟงกชนแสดงขอความออกทางหนาจอ

โครงสรางควบคมโครงสรางควบคม

4

if/else

do/while

for

switch

if(x==4) {// act1

} else {// act2

}

int i=5;while(i!=0) {

// act1i--;

}

for(int i=0;i<=9;i++){// act1

}

char c=IN.getChar();switch(c) {

case ‘a’:case ‘b’:

// act1break;

default: // act2

}

while

int i=5;do {

// act1i--;

} while(i!=0);

Page 2: ปฏิบตัการทิี่ 1 - Ttime.in.thgetArea(): float height base การส บทอดคลาส คลาสท สร างข นบางคร งอาจจ

ClassClassโครงสรางของวตถ ทตองการใชในการสราง Object

5

ชอ Classattribute-1attribute-2attribute-nmethod-1method-2method-n

Fruitgrams: intcals_per_gram: int

setGrams(int): voidsetCalsPerGram(int): voidtotal_calories(): int

รายการตวแปรทใชในคลาส

ฟงกชนททางานภายในคลาส

ตวอยาง Classตวอยาง Class

6

class Fruit {int grams;int cals_per_gram;void setGrams(int g) { grams = g; }void setCalsPerGram(int cal) {

cals_per_gram = cal;}int total_calories() {

return grams*cals_per_gram;}

}

Fruitgrams: intcals_per_gram: int

setGrams(int): voidsetCalsPerGram(int): voidtotal_calories(): int

ObjectObject

7

class Fruit {int grams;int cals_per_gram;void setGrams(int g) { grams = g; }void setCalsPerGram(int cal) {

cals_per_gram = cal;}int total_calories() {

return grams*cals_per_gram;}public static void main(String[] a) {

Fruit mango = new Fruit();mango.setGrams(11);mango.setCalsPerGram(100);System.out.println("Mango has " + mango.total_calories() );

}}

Fruitgrams: intcals_per_gram: int

setGrams(int): voidsetCalsPerGram(int): voidtotal_calories(): int

mango: Fruitgrams = 11cals_per_gram = 100

C l a s

sO b

j e c t

สราง object

เรยกใชฟงกชน

คลาสทถกสรางขนจะไมสามารถใชงานได นอกจากสรางเปน Object กอนกจกรรมกจกรรม

จงเขยนคลาส Triangle ซงมโครงสรางดงแผนภาพ หลงจากนน สรางเปน Object เพอทดสอบการทางานของฟงกชนทสรางขนในคลาส เพอแสดงพนทสามเหลยมออกทางหนาจอ

8

Trianglebase: intheight: int

setBase(int): voidsetHeight(int): voidgetArea(): float

height

base

Page 3: ปฏิบตัการทิี่ 1 - Ttime.in.thgetArea(): float height base การส บทอดคลาส คลาสท สร างข นบางคร งอาจจ

การสบทอดคลาสการสบทอดคลาสคลาสทสรางขนบางครงอาจจาเปนตองเพมสวน attribute และ method เพอใหทางาน

เฉพาะเจาะจงกวาคลาสเดมทมอย

คลาส Fruit เมอตองการขยายใหเปนคลาส BerryFruit จะสบทอดคณสมบตทวไปของผลไมจากคลาส Fruit และจะเพมคณสมบตของ BerryFruit เขาไป และอาจปรบปรงการทางานของฟงกชนเดม

9

ตวอยาง Classตวอยาง Class

10

class Fruit {int grams;int cals_per_gram;...

int total_calories() {return grams*cals_per_gram;

}}class BerryFruit extends Fruit {

String color;int total_calories() {

return grams*cals_per_gram - 5;}

}public class FruitApp {public static void main(String[] a) {

BerryFruit strawberry = new BerryFruit();strawberry.setGrams(11);strawberry.setCalsPerGram(100);System.out.println("Strawberry has " +

strawberry.total_calories() );}

}

Fruitgrams: intcals_per_gram: int

setGrams(int): voidsetCalsPerGram(int): voidtotal_calories(): int

BerryFruit

color: String

total_calories(): int

InterfaceInterface Interface คอ คลาสทมเพยงตนแบบของฟงกชน ไมมสวนการทางานจรง

Interface ใชในการกาหนดวาคลาสนนทาอะไรไดบาง ทาใหมหลายคลาสททางานแตกตางกนไป แตมตนแบบฟงกชนเหมอนกน

11

ตวอยางการใช Interfaceตวอยางการใช Interface

12

interface Human { public void talk();}

class Thai implements Human { public void talk(){ System.out.println("I'm Thai."); }}

class Japanese implements Human { public void talk() { System.out.println("I'm Japanese."); }}

class Chinese implements Human { public void talk() { System.out.println("I'm Chinese."); }}

public class Test { public static void main(String[] s) { Thai thai = new Thai(); Japanese jap = new Japanese(); Chinese chinese = new Chinese(); talk(thai); talk(jap); talk(chinese); }

private static void talk(IHuman h){ h.talk(); }}

Human

talk(): void

Thai

talk(): void

Japanese

talk(): void

Chinese

talk(): void

Page 4: ปฏิบตัการทิี่ 1 - Ttime.in.thgetArea(): float height base การส บทอดคลาส คลาสท สร างข นบางคร งอาจจ

AnnotationsAnnotationsAnnotation คอ การกาหนด Configuration ใหกบโปรแกรมทสรางขน

การนา Annotation ไปไวหนาอะไรจะเปนขอมลของสงนน เชน ไวหนา ฟงกชนจะเปนของฟงกชน

รปแบบการเขยน Annotation จะใช @ นาหนา เชน

13

@WebServicepublic class onews {

@WebMethodpublic int add(int a, int b) {

return a + b; }}

PackagesPackagesPackage ใชในการจดหมวดหม Class เพอใหงายตอการพฒนาระบบทมขนาดใหญPackage เปรยบเสมอนโฟลเดอรในการจดเกบโคดโปรแกรม เมอมการเกบ Class ตางๆใน Package แลวจะตองระบชอ package ทสวนหวของ

โคดดวย เชนpackage kku.cs;

เมอตองการใชคลาสใน package ตองระบชอ package ในสวนหวของโคดดวย เชนimport kku.cs.Student; // กรณใช Class เดยวimport kku.cs.*; // กรณใชทกคลาส

14

การตรวจจบขอผดพลาด (Exception)การตรวจจบขอผดพลาด (Exception)ภาษา Java มประโยค try-catch สาหรบจดการกบขอผดพลาด ซงมรปแบบดงน

try {<statements>;

} catch(Exception e) {<statements>;

} เมอตองการดกจบขอผดพลาดคาสงบรรทดใดจะนาคาสงไวในสวน try { } เมอตองการใหทางานใดๆ เมอเกดขอผดพลาดจะเขยนคาสงไวในสวน catch { }

15

ตวอยางตวอยาง

16

class Test {public static void main(String[] args) {

try {int x = 0;System.out.println(1 / x);

} catch (Exception ex) {System.out.println(ex);

}}

}

ตรวจจบวาตวหารจะมคาเปน 0 หรอไม

ถามคาเปน 0 ใหแสดงขอความเตอน

Page 5: ปฏิบตัการทิี่ 1 - Ttime.in.thgetArea(): float height base การส บทอดคลาส คลาสท สร างข นบางคร งอาจจ

JSPJSPJSP หรอ JavaServer Pages คอ ภาษาโปรแกรมททางานบน server (server-side

programming) เชนเดยวกบภาษา PHPJSP ใชในการสราง Web Application ทอยบนพนฐานของภาษา Java

17

การแทรกโคด Java ใน JSPการแทรกโคด Java ใน JSPใชเครองหมาย <% %> เพอแทรกโคด Java ในคาสง HTML

18

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>

<html><body>

<%for(int i=0; i<5; i++) {

out.println("Hello สวสด<br>"); }%>

</body></html>

สวนหว ใชระบการ encodeคลาสทจะ import มาใช

สวน Scriptlet ใชในการแทรกโคด Java

การตดตง Tomcat Serverการตดตง Tomcat ServerTomcat หรอ Apache Tomcat คอ โปรแกรม Web Server ทใชในการประมวลผล

ไฟล JSP ดาวนโหลดโปรแกรมท (เลอกไฟลชนด .zip) http://tomcat.apache.org/

Extract ไฟลไวทใดกไดในเครองไปทโปรแกรม Eclipse เลอกเมน File > New > Other… เลอกท Server

19

สราง Server ในการทดสอบ JSPสราง Server ในการทดสอบ JSP

20

Page 6: ปฏิบตัการทิี่ 1 - Ttime.in.thgetArea(): float height base การส บทอดคลาส คลาสท สร างข นบางคร งอาจจ

สราง Server ในการทดสอบ JSPสราง Server ในการทดสอบ JSP

21

เลอกโฟลเดอรทเกบโปรแกรม Tomcat

การสราง Project ใหมการสราง Project ใหม เลอกเมน File > New > Dynamic Web Project แลวใสชอ Project

สรางไฟล JSP ในโฟลเดอร WebContent คลกขวาทโฟลเดอร WebContent เลอก New > JSP File

พมพโคด และทาการบนทก

22

การเพม Project บน Tomcat Serverการเพม Project บน Tomcat Server

23

การ Start Serverการ Start Server

24

Page 7: ปฏิบตัการทิี่ 1 - Ttime.in.thgetArea(): float height base การส บทอดคลาส คลาสท สร างข นบางคร งอาจจ

การรนหนา JSP ผาน Browserการรนหนา JSP ผาน Browser

25

ชอ Project ชอไฟล jsp

การรบคาจาก URLการรบคาจาก URL

26

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>

<html><body><%

String num = request.getParameter("num");if (num!=null) {

int n = Integer.parseInt(num);for(int i=0; i<n; i++) {

out.println("Hello สวสด<br>"); }

}%></body></html>

ตวแปร request ใชในการดงคาจาก URL

คาจาก URL จะเปน String เสมอ จงตองแปลงเปนตวเลขกอนนาไปใช

การรบคาจาก HTML ฟอรมการรบคาจาก HTML ฟอรม

27

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>

<html><body><%

String num = request.getParameter("num");if (num!=null) {

int n = Integer.parseInt(num);for(int i=0; i<n; i++) {

out.println("Hello สวสด<br>"); }

}%>

<form action=""><input type="text" name="num"><input type="submit" value="สง">

</form></body></html>

กจกรรมกจกรรมจงเขยนเวบสาหรบคานวณคาพนทสามเหลยม โดยสรางฟอรม HTML รบคาฐาน

และสง แลวแทรกโคดในการรบคาและคานวณพนทสามเหลยม

28