1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài tập java cơ bản có lời giải

8 1,4K 8

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 704,94 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

a Viết các phương thức get/set cho lớp Quadrangle b Viết các phương thức khởi tạo sau: i Phương thức khởi tạo không có tham số nào: Các điểm được khởi tạo mặc định như sau: A0,0, B0,1, C

Trang 1

Môn học: Lập trình Java Bài thực hành số 3: Kết tập, kế thừa và đa hình

Bài 1) Lấy kết quả lớpPointtrong bài thực hành 2 Tạo một lớp tứ giác Quadrangletrong gói

com.beangồm 4 đối tượng của lớpPoint(p1, p2, p3, p4 theo thứ tự các điểm trong tứ giác) a) Viết các phương thức get/set cho lớp Quadrangle

b) Viết các phương thức khởi tạo sau:

i) Phương thức khởi tạo không có tham số nào: Các điểm được khởi tạo mặc định như sau: A(0,0), B(0,1), C(1,1), D(1,0).

ii) Phương thức khởi tạo nhận 4 đối tượng thuộc lớpPoint làm tham số

c) Viết phương thức nhập vào tứ giác từ bàn phím: Nhập từng điểm một theo thứ tự của các điểm trong tứ giác Chú ý nhập bằng phương thức JOptionPane.showInputDialog(), có

sử dụng Exception để kiểm tra liệu người dùng có nhập chữ vào hay không.

public void nhap(){…}

d) Viết phương thức hiển thị thông tin tứ giác bao gồm loại, tên tứ giác và tọa độ các đỉnh:

Ví dụ: ABCD: A(0,0), B(0,1), C(1,1), D(1,0).

public void hienThi(){…}

e) Viết phương thức lấy về tên đối tượng của lớp Quadrangle như sau:

public String getName(){

return “Tu giac”;

}

f) Chỉnh sửa lớp Quadranglethành 1 lớp trừu tượng (abstract) Viết phương thức trừu tượng tính diện tích cho lớp Quadrangle có chữ ký như sau:

public abstract double getArea();

g) Viết hàmmaincho lớpTestQuad kiểm tra các phương thức đã cài đặt cho lớp như sau:

package com.test;

import com.bean.*;

public class TestQuad {

public static void main(String[] args) {

//Goi ham khoi tao khong tham so Quadrangle q1 = new Quadrangle();

q1.hienThi();

Point p1 = new Point(0, 2);

Point p2 = new Point(0, 3);

Point p3 = new Point(4, 3);

Trang 2

Point p4 = new Point(2, 2);

//Goi ham khoi tao 4 tham so Quadrangle q2 = new Quadrangle(p1, p2, p3, p4);

q2.hienThi();

Quadrangle q3 = new Quadrangle();

q3.nhap();

q3.hienThi();

}

}

Bài 2) Tạo một lớp hình vuông Square trong gói com.bean thừa từ lớp Quadrangle ở trên gồm 1 thuộc tính tâm đối xứng là đối tượng của lớp Point (tamDX).

a) Viết các phương thức set/get cho các thuộc tính của lớpSquare.

b) Xây dựng 2 phương thức khởi tạo: Sau khi khởi tạo cho 4 đỉnh, tiến hành tính toán tọa

độ cho tâm đối xứng và khởi tạo cho thuộc tínhtamDXở trên.

Một phương thức không có tham số Các điểm được khởi tạo mặc định như sau: A(0,0), B(0,1), C(1,1), D(1,0).

Một phương thức nhận 4 đối tượng thuộc lớpPointlàm tham số.

c) Viết lại phương thức lấy về tên đối tượng của lớp Square như sau:

public String getName(){

return “Hinh vuong voi tam doi xung la: ”

+ tamDX.getTenDiem() + “(”

+ tamDX.getTungDo() + “,”

+ tamDX.getHoanhDo() + “)”;

}

d) Cài đặt cụ thể cho phương thức tính diện tích kế thừa từ lớp Quadrangle theo công thức tính diện tích hình vuông.

e) Viết hàm main của lớp TestSquare thực hiện các lệnh để kiểm tra các phương thức của lớp đã xây dựng như sau:

package com.test;

import javax.swing.JOptionPane;

import com.bean.*;

public class TestSquare {

public static void main(String[] args) {

//Goi ham khoi tao khong tham so Square s1 = new Square();

s1.setP3(new Point(-1,1));

s1.setP4(new Point(-1,0));

s1.hienThi();

Trang 3

Point p2 = new Point(0, 3);

Point p3 = new Point(1, 3);

Point p4 = new Point(1, 2);

//Goi ham khoi tao 4 tham so Square s2 = new Square(p1, p2, p3, p4);

s2.hienThi();

//Goi ham khoi tao 4 tham so Quadrangle q1 =

new Quadrangle(p1, p4, new Point(1,1), new Point(0,1)); Quadrangle q2 = new Square(p1, p2, p3, p4); //Up casting

JOptionPane.showMessageDialog(null,q1.getName());

q1.hienThi();

JOptionPane.showMessageDialog(null,q2.getName());

q2.hienThi();

Square s3 = (Square) q1; //Down casting JOptionPane.showMessageDialog(null,s3.getName());

s3.hienThi();

Square s4 = new Square();

s4.nhap();

s4.hienThi();

}

}

Bài 3) Viết applet trong đó có vẽ hình và nhúng ảnh bên trong applet, trong đó có truyền tham số

từ HTML vào.

Hướ ng dẫn:

a) VD1:

Tạo HelloWWW2.java:

import java.applet.Applet;

import java.awt.*;

public class HelloWWW2 extends Applet {

public void init() {

setFont(new Font("SansSerif", Font.BOLD, 30));

Color background = Color.GRAY;

Color foreground = Color.DARK_GRAY;

String backgroundType = getParameter("BACKGROUND");

if (backgroundType != null) {

if (backgroundType.equalsIgnoreCase("LIGHT")){

background = Color.WHITE;

foreground = Color.BLACK;

} else if (backgroundType.equalsIgnoreCase("DARK")){

background = Color.BLACK;

foreground = Color.WHITE;

}

Trang 4

setBackground(background);

setForeground(foreground);

}

public void paint(Graphics g) {

g.drawString("Hello, World Wide Web.", 5, 35);

}

}

Tạo và chạy HelloWWW2.html:

<h1>Customizable HelloWWW Applet</h1>

<applet code="HelloWWW2.class" width=400 height=40>

<param name="BACKGROUND" value="LIGHT">

<b>Error! You must use a Java-enabled browser.</b>

</applet>

<applet code="HelloWWW2.class" width=400 height=40>

<param name="BACKGROUND" value="DARK">

<b>Error! You must use a Java-enabled browser.</b>

</applet>

<applet code="HelloWWW2.class" width=400 height=40>

<b>Error! You must use a Java-enabled browser.</b>

</applet>

b) VD2:

Tạo JavaJump.java

import java.applet.Applet;

import java.awt.*;

/** An applet that draws an image */

public class JavaJump extends Applet{

private Image jumpingJava;

public void init() {

setBackground(Color.white);

setFont(new Font("SansSerif", Font.BOLD, 18));

jumpingJava = getImage(getDocumentBase(),

getParameter(“image”));

add(new Label("Great Jumping Java!"));

System.out.println("Yow! I'm jiving with Java.");

}

public void paint(Graphics g) {

g.drawImage(jumpingJava, 0, 50, this);

}

}

Tạo và chạy JavaJump.html, truyền tên image có trong máy vào file

<HTML>

<HEAD>

<TITLE>Jumping Java</TITLE>

</HEAD>

<BODY BGCOLOR="BLACK" TEXT="WHITE">

<H1>Jumping Java</H1>

<P>

Trang 5

<APPLET CODE="JavaJump.class"

WIDTH=250

HEIGHT=335>

<param name="image" value=“jumping.gif">

<B>Sorry, this example requires

Java.</B>

</APPLET>

</BODY>

</HTML>

Bài 4) Viết chương trình vẽ tại vị trí nhấn chuột như sau.

Đưa ra nhận xét về cách thức xử lý sự kiện.

Hướ ng dẫn:

a) Cách 1: Sử dụng kế thừa lớp

Tạo lớp CircleListener:

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

public class CircleListener extends MouseAdapter {

private int radius = 25;

public void mousePressed(MouseEvent event) {

Applet app = (Applet)event.getSource();

Graphics g = app.getGraphics();

g.fillOval(event.getX()-radius,

event.getY()-radius,

2*radius, 2*radius);

}

}

Tạo applet sử dụng lớp CircleListener để xử lý sự kiện

import java.applet.Applet;

import java.awt.*;

public class CircleDrawer1 extends Applet {

public void init() {

setForeground(Color.blue);

addMouseListener(new CircleListener());

}

}

Dịch Tạo CircleDrawer1.html:

<HTML>

<HEAD>

<TITLE>Draw Circle 1</TITLE>

</HEAD>

<BODY BGCOLOR="BLACK" TEXT="WHITE">

<H1>Draw Circle by clicking the mouse</H1>

<P>

<APPLET CODE="CircleDrawer1.class"

Trang 6

HEIGHT=335>

<B>Sorry, this example requires Java.</B>

</APPLET>

</BODY>

</HTML>

Mở file CircleDrawer1.html bằng IE hoặc Firefox.

Ví dụ kết quả: Nhấn chuột vào đâu thì tại vị trí đó vẽ hình tròn đặc màu xanh.

b) Cách 2: Sử dụng thực thi giao diện

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

public class CircleDrawer2 extends Applet

implements MouseListener { private int radius = 25;

public void init() {

setForeground(Color.blue);

addMouseListener(this);

}

public void mouseEntered(MouseEvent event) {

System.out.println("mouseEntered");

}

Trang 7

public void mouseExited(MouseEvent event) {

System.out.println("mouseExited");

}

public void mouseReleased(MouseEvent event) {

System.out.println("mouseReleased");

}

public void mouseClicked(MouseEvent event) {

System.out.println("mouseClicked");

}

public void mousePressed(MouseEvent event) {

System.out.println("mousePressed");

Graphics g = getGraphics();

g.fillOval(event.getX()-radius,

event.getY()-radius, 2*radius, 2*radius);

}

}

Trang 8

Bài 5) Viết chương trình thực hiện biểu đồ lớp ở dưới Trong đó:

- Phương thức draw(Graphics) khi được cài đặt trong lớp Circle sẽ vẽ đường tròn tại tâm là tọa độ củaShape(x, y), bán kính bằng radius(chú ý: x, y tính theo pixel).

- Phương thức erase(Graphics) khi được cài đặt trong lớp Circle sẽ vẽ hình tròn đặc (bằng màu nền hiện tại) tại tâm là tọa độ củaShape(x, y), bán kính bằngradius.

- Phương thức moveTo(Graphics,int,int) di chuyển hình từ tâm có tọa độ cũ sang tâm

có tọa độ mới là tham số truyền vào (xóa hình tại vị trí cũ, thay đổi tọa độ tâm, vẽ hình tại tọa độ mới như dưới đây:

public void moveTo(Graphics g, int x1, int y1){

erase(g); x = x1; y = y1; draw(g);

}

- Phương thứccalculateArea() tính theo công thức tính diện tích hình tròn.

- Tương tự lớp Circle, viết thêm lớpSquare có 1 thuộc tính là side: float và viết các phương thức giống như Circle, có điều phải phù hợp với hình vuông (vẽ hình vuông, tính diện tích theo công thức tính diện tích hình vuông).

Chú ý: In nghiêng tức là abstract class/method.

Bài 6) Xây dựng một applet, trong đó có vẽ hình chữ nhật 3D bao quanh dòng chữ “Bai tap thuc

hanh so 3 - Applet”, âm thanh một bài hát nào đó và hình ảnh liên quan đến bài hát đó; trong

đó tên tệp âm thanh và hình ảnh; màu nền và màu vẽ được truyền trong tham số từ tệp HTML.

Ngày đăng: 08/01/2016, 10:33

TỪ KHÓA LIÊN QUAN

w