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

Lập trình JAVA 4 Bài tập

9 774 12

Đ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 9
Dung lượng 317,07 KB

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

Nội dung

Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA Lập trình JAVA

Trang 1

Module 4: Writing Class Nội dung kiến thức thực hành:

- Khai báo và sử dụng lớp

- Viết các lớp với mối quan hệ composition

Bài tập 1:

Mục đích:

- Tìm hiểu cách viết lớp trong Java

Yêu cầu:

Cho lớp Distance như sau:

Tìm hiểu lớp này và giải thích kết quả Nếu chương trình bị lỗi, hãy sửa lỗi

Hướng dẫn:

-

Bài tập 2:

Mục đích:

- Biết cách viết và sử dụng overloaded constructors

Yêu cầu:

- Cho các lớp sau, hãy tìm hiểu và giải thích cách sử dụng lớp Time Cho biết kết quả của chương trình là gì?

Trang 2

// Time.java

import java.text.DecimalFormat;

public class Time {

private int hour; // 0 - 23

private int minute; // 0 - 59

private int second; // 0 - 59

// Time constructor initializes each instance variable to zero Ensures that Time object // starts in a consistent state

public Time() {

setTime( 0, 0, 0 );

}

// Time constructor: hour supplied, minute and second defaulted to 0

public Time( int h ) {

setTime( h, 0, 0 );

}

// Time constructor: hour and minute supplied, second defaulted to 0

public Time( int h, int m ) {

setTime( h, m, 0 );

}

// Time constructor: hour, minute and second supplied

public Time( int h, int m, int s ) {

setTime( h, m, s );

}

// Time constructor: another Time object supplied

public Time( Time time ) {

setTime( time.hour, time.minute, time.second );

}

// Set a new time value using universal time Perform

// validity checks on data Set invalid values to zero

private void setTime( int h, int m, int s ) {

// hour = ( ( h >= 0 && h < 24 ) ? h : 0 );

if (( h >= 0 && h < 24 ))

hour = h;

else hour =0;

minute = ( ( m >= 0 && m < 60 ) ? m : 0 );

second = ( ( s >= 0 && s < 60 ) ? s : 0 );

}

// convert to String in universal-time format

public String toUniversalString() {

DecimalFormat twoDigits = new DecimalFormat( "00" );

return twoDigits.format( hour ) + ":" + twoDigits.format( minute ) + ":" +

twoDigits.format( second );

}

// convert to String in standard-time format

public String toString() {

DecimalFormat twoDigits = new DecimalFormat( "00" );

return ( (hour == 12 || hour == 0) ? 12 : hour % 12 ) + ":" + twoDigits.format( minute ) +

":" + twoDigits.format( second ) + ( hour < 12 ? " AM" : " PM" );

}

}

Trang 3

// TimeTest.java

import javax.swing.*;

public class TimeTest {

// test constructors of class Time2

public static void main( String args[] ) {

Time t1, t2, t3, t4, t5, t6;

t1 = new Time(); // 00:00:00

t2 = new Time( 2 ); // 02:00:00

t3 = new Time( 21, 34 ); // 21:34:00

t4 = new Time( 12, 25, 42 ); // 12:25:42

t5 = new Time( 27, 74, 99 ); // 00:00:00

t6 = new Time( t4 ); // 12:25:42

String output="";

output = "Constructed with: " + "\nt1: all arguments defaulted" + "\n " + t1.toUniversalString() + "\n " + t1.toString();

output += "\nt2: hour specified; minute and " + "second defaulted" + "\n " + t2.toUniversalString() + "\n

" + t2.toString();

output += "\nt3: hour and minute specified; " + "second defaulted" + "\n " + t3.toUniversalString() + "\n

" + t3.toString();

output += "\nt4: hour, minute, and second specified" + "\n " + t4.toUniversalString() + "\n " +

t4.toString();

output += "\nt5: all invalid values specified" + "\n " + t5.toUniversalString() + "\n " + t5.toString(); output += "\nt6: Time2 object t4 specified" + "\n " + t6.toUniversalString() + "\n " + t6.toString(); JOptionPane.showMessageDialog( null, output, "Demonstrating Overloaded Constructors",

JOptionPane.INFORMATION_MESSAGE );

System.exit(0);

}

}

Hướng dẫn:

Bài tập 3:

Mục đích:

- Biết cách viết và sử dụng lớp thành phần (composition class)

Yêu cầu:

- Cho các lớp sau, hãy tìm hiểu và giải thích cách sử dụng lớp Date, lớp Employee Cho biết kết quả của chương trình là gì?

// Date.java

public class Date {

private int month; // 1-12

private int day; // 1-31 based on month

private int year; // any year

public Date( int theMonth, int theDay, int theYear ) {

if ( theMonth > 0 && theMonth <= 12 ) // validate month

month = theMonth;

else {

month = 1;

Trang 4

System.out.println( "Month " + theMonth + " invalid Set to month 1." );

}

year = theYear; // could validate year

day = checkDay( theDay ); // validate day

System.out.println( "Date object constructor for date " + toString() );

}

private int checkDay( int testDay ) {

int daysPerMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

// check if day in range for month

if ( testDay > 0 && testDay <= daysPerMonth[ month ] )

return testDay;

// check for leap year

if ( month == 2 && testDay == 29 && ( year % 400 == 0 ||

( year % 4 == 0 && year % 100 != 0 ) ) )

return testDay;

System.out.println( "Day " + testDay + " invalid Set to day 1." );

return 1; // leave object in consistent state

}

// Create a String of the form month/day/year

public String toDateString() {

return month + "/" + day + "/" + year;

}

}

// Employee.java

public class Employee {

private String firstName;

private String lastName;

private Date birthDate;

private Date hireDate;

// constructor to initialize name, birth date and hire date

public Employee() {

firstName=””;

lastName=””;

birthDate=new Date(0,0,0);

hireDate=new Date(0,0,0);

}

public Employee( String first, String last, Date dateOfBirth, Date dateOfHire) {

firstName = first;

lastName = last;

birthDate = dateOfBirth;

hireDate = dateOfHire;

}

// convert Employee to String format

public String toEmployeeString() {

Trang 5

return lastName + ", " + firstName + " Hired: " + hireDate.toDateString() + " Birthday: " + birthDate.toDateString();

}

}

//EmployeeTest.java

import javax.swing.JOptionPane;

public class EmployeeTest {

public static void main( String args[] ) {

Date birth = new Date( 7, 24, 1949 );

Date hire = new Date( 3, 12, 1988 );

Employee employee = new Employee( "Bob", "Jones", birth, hire );

JOptionPane.showMessageDialog( null, employee.toEmployeeString(),

"Testing Class Employee", JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 );

}

}

Hướng dẫn:

-

Bài tập 4:

Mục đích:

Yêu cầu:

Viết lớp HinhTron dùng để tính diện tích và chu vi hình tròn từ bán kính Viết hàm main

để test lớp này

Hướng dẫn:

Bài tập 5:

Mục đích:

-

Yêu cầu:

(i) Xây dựng lớp CHinhTamGiac như sau:

CHinhTamGiac

- ma : int

- mb : int

- mc : int + CHinhTamGiac() + CHinhTamGiac(a: int, b: int, c: int) + getCanhA() : int

+ setCanhA(v : int) : void

Trang 6

+ getCanhB() : int + setCanhB(v : int) : void + getCanhC() : int

+ setCanhC(v : int) : void + laTamGiac() : boolean + laTamGiac(int, int, int) : boolean + getChuVi() : int

+ getDienTich() : double Trong đó:

ộc tính ma, mb, mc là ba cạnh của tam giác

ởi tạo CHinhTamGiac(int, int, int): yêu cầu kiểm tra:

o nếu giá trị truyền có số âm thì thông báo và gán thuộc tính tương ứng bằng 0;

o nếu 3 giá trị truyền vào không lập thành một hình tam giác thì thông báo "Không phải hình tam giác" và gán 3 thuộc tính bằng 0

HD : ba giá trị lập thành một hình tam giác khi và chỉ khi tổng hai cạnh bất kỳ luôn lớn hơn cạnh còn lại

setCanhA, setCanhB, setCanhC cũng yêu cầu phải kiểm tra giá trị gán có là

số dương và lập thành tam giác hay không, nếu không thì không gán (giữ lại giá trị cũ)

getChuVi(), getDienTich(): tính chu vi và diện tích của tam giác

laTamGiac(): trả về giá trị true khi ba giá trị ma, mb, mc lập thành một hình tam

giác, ngược lại trả về giá trị false

laTamGiac(int, int, int): trả về giá trị true khi ba giá trị a, b, c lập thành một

hình tam giác, ngược lại trả về giá trị false

(ii) Viết hàm main để kiểm tra lớp CHinhTamGiac theo yêu cầu sau:

Cho nhập vào 3 giá trị số nguyên và khởi tạo hình tam giác có các cạnh ứng với 3 giá trị này, nếu 3 giá trị này không lập thành tam giác thì thông báo, ngược lại thì tính và xuất ra chu vi

và diện tích của nó

Hướng dẫn:

Bài tập 6:

Mục đích:

-

Yêu cầu:

(i) Xây dựng lớp NhanVien như sau:

NhanVien

- maNV : String

- soSP : int

+ NhanVien()

+ NhanVien (ma: String, sp : int)

Trang 7

+ getMaNV() : String + setMaNV(ma : String) : void + getSoSP() : int

+ setSoSP(sp : int) : void + coVuotChuan() : boolean + getTongKet() : String + getLuong(): double + XuatTieuDe() : static void

+ toString() : String

rong các hàm khởi tạo và các hàm setSoSP, khi gán giá trị cho thuộc tính soSP thì cần

kiểm tra giá trị đó có phải là số dương không, nếu là số dương thì mới gán giá trị cho thuộc tính, ngược lại thì gán bằng 0

coVuotChuan() : trả về true nếu soSP > 500, ngược lại trả về false

Giải thích: hàm này dùng để kiểm tra xem số lượng sản phẩm của nhân viên có vượt quá số lượng chuẩn hay không

getTongKet() : trả về chữ "Vượt" khi soSP > 500, ngược lại để trống (có thể sử

dụng hàm coVuotChuan() để kiểm tra)

getLuong() : trả về lương của một nhân viên, lương ăn theo sản phẩm với đơn giá cơ

bản cho 1 sản phẩm là 20000, và nếu số sản phẩm của nhân viên vượt chuẩn thì phần vượt chuẩn được tính đơn giá là 30000

XuatTieuDe() : xuất tiêu đề gồm các cột : mã nhân viên, số sản phẩm, lương, tổng

kết

toString() : trả về chuỗi chứa thông tin của nhân viên gồm các cột: Mã nhân viên

(maNV), Số sản phẩm (soSP), Lương và Tổng kết

(ii) Viết hàm main để kiểm tra lớp NhanVien theo yêu cầu sau:

Tạo 2 nhân viên với các thuộc tính cho người dùng nhập vào Xuất ra các thông tin của

họ, gồm mã, số sản phẩm, lương, tổng kết

Hướng dẫn:

Bài tập 7:

Mục đích:

Yêu cầu:

(i) Xây dựng lớp CNhanVien, biết:

ần lượt là các thuộc tính họ, tên và số sản phẩm của nhân viên

ết hàm khởi tạo CNhanVien(String, String, int), hàm này sẽ khởi tạo họ, tên, số sản phẩm của nhân viên; hàm phải kiểm tra số sản phẩm là số lớn hơn hoặc bằng 0, nếu là số

âm thì gán giá trị cho mSoSP bằng 0

ết các hàm lấy và gán giá trị cho thuộc tính của lớp (các hàm get/set)

ết hàm getLuong() để tính lương cho nhân viên, lương = số sản phẩm * đơn giá, với đơn giá tùy thuộc vào số sản phẩm như sau:

Trang 8

Số sản phẩm Đơn giá

ết hàm LonHon(CNhanVien nv2): hàm này trả về giá trị true khi số sản phẩm (mSoSP) lớn hơn số sản phẩm của nv2, ngược lại trả về false

(ii) Viết hàm main sử dụng lớp CNhanVien theo yêu cầu sau:

Cho người dùng nhập vào 2 nhân viên, mỗi nhân viên nhập vào họ, tên, số sản phẩm của

họ Hãy tính và xuất ra lương của từng nhân viên So sánh và xuất ra thông báo nhân viên nào

có số sản phẩm nhiều hơn và nhiều hơn bao nhiêu Dùng 2 cách so sánh: dùng hàm LonHon và không dùng hàm LonHon

Hướng dẫn:

Bài tập 8:

Mục đích:

-

Yêu cầu:

Xây dựng lớp SinhVien với các thuộc tính của sinh viên là mã sinh viên, họ tên, điểm lý thuyết,

điểm thực hành Viết hàm main cho phép thực hiện:

(i) Nhập thông tin cho một sinh viên

(ii) Tính điểm trung bình của sinh viên (điểm trung bình = (đlt+dth)/2)

(iii) Xuất thông tin sinh viên và cho biết kết quả học tập của sinh viên (Đậu khi điểm trung bình >=5, ngược lại là Rớt)

Hướng dẫn:

Bài tập 9:

Mục đích:

-

Yêu cầu:

Xây dựng lớp NhanVien, biết cấu trúc của một nhân viên như sau:

- Mã NV: kiểu số nguyên

Trang 9

- Họ tên: kiểu chuỗi

- Địa chỉ: kiểu chuỗi

- CBQL: kiểu logic, có giá trị true nếu nhân viên này là cán bộ quản lý

Viết hàm main cho phép khởi tạo một số đối tượng thuộc lớp NhanVien, sau đó in ra mã, họ tên của các nhân viên là cán bộ quản lý

Hướng dẫn:

Bài tập 10:

Mục đích:

- Viết các lớp với mối quan hệ cấu thành, tập hợp (aggregation)

Yêu cầu:

Cho lược đồ các lớp như sau :

Hãy cài đặt theo mô hình này Viết hàm main cho nhập vào một số Student và xuất ra các thông

tin đó

Hướng dẫn:

Ngày đăng: 23/10/2016, 14:48

HÌNH ẢNH LIÊN QUAN

Hình tam giác, ngược lại trả về giá trị false. - Lập trình JAVA 4 Bài tập
Hình tam giác, ngược lại trả về giá trị false (Trang 6)

TỪ KHÓA LIÊN QUAN

w