1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lập trình hướng đối tượng

49 2 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài tập lập trình hướng đối tượng
Trường học Trường Đại Học B
Chuyên ngành Lập trình hướng đối tượng
Thể loại Bài tập
Định dạng
Số trang 49
Dung lượng 2,26 MB

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

Nội dung

Làm quen vái Eclipse IDE T¿o láp mái bằng cách nhấn phÁi chußt lên package cần thêm láp vào, chọn New → Class Chú ý: Tên áp luôn b ắt đÅu b ằng 1 ký t ự hoa.. Thực thi ch°¢ng trình Nhấn

Trang 1

BÀI T ¾P

(OJBECT ORIENTED PROGRAMMING EXERCISES)

Trang 2

M ĀC LĀC

Module 0 LÀM QUEN VàI ECLIPSE IDE 3

Module 1 JAVA CN BÀN 13

Module 2 CÁC KHÁI NIàM C¡ BÀN LÀP TRÌNH H¯àNG ĐàI T¯þNG 22

Module 3 KÀ THĀA – ĐA HÌNH 36

Module 4 TÀP HþP 43

Trang 3

Module 0 LÀM QUEN V àI ECLIPSE IDE

M ục tiêu:

Làm quen với công cụ lập trình Java (Eclipse)

Tạo workspace (nơi lưu project), tạo project Java, tạo package

Thay đổi workspace

Yêu cầu:

Máy tính phải được cài đặt sẵn JDK (Java Development Kit)

Máy tính phải có sẵn phần mềm soạn thảo hỗ trợ cho lập trình hướng đối tượng dùng ngôn ngữ lập trình Java (Eclipse)

Bài 1 Khởi đßng Eclipse

Khi khái đßng Eclipse, á lần đầu tiên, Eclipse s¿ xuất hián cửa sổ hßi n¢i l°u trữ các project (workspace)

à những lần má sau, Eclipse s¿ nhá workspace này và s¿ tự má Có thể thay đổi workspace này

Bài 2 Thay đổi workspace

Vào File → Switch Workspace

Bài 3 T¿o Project

1 T¿o project mái: Menu File->New->Java Project

Trang 4

Module 0 Làm quen vái Eclipse IDE

Nhấn Finish KÁt quÁ trong Project Explorer

Bài 4 Mở Project

Eclipse không hỗ trÿ má project trực tiÁp nên b¿n không có kiểu <double-click-for-open= th°ßng thấy, có

thể má l¿i project đã có bằng 1 trong các cách sau:

Trang 5

Nhấn nút Browse để tìm đÁn th° mục chÿa project Chọn project cần Import rồi nhấn Finish

Bài 5 T¿o package

L°u ý NÊN t¿o các package để l°u trữ các láp java Package cho phép l°u trữ các class của ÿng dụng theo nhóm (các láp quan há gần thì l°u trong cùng package)

Mỗi ÿng dụng có thể có mßt hoặc nhiều package Mỗi package chÿa mßt hoặc nhiều class

Đặt tên theo kiểu: a.b.c trong đó các ký tự là tên bất kỳ Ví dụ: chuong01.tuan01.bai01, điều đó có nghĩa

là Eclipse s¿ t¿o cho b¿n 3 th° mục lồng vào nhau: chuong01\tuan01\bai01

L°u ý: các gói luôn đ°ÿc đ¿t tên b ằng ch ữ th°ờng

Trang 6

Module 0 Làm quen vái Eclipse IDE T¿o láp mái bằng cách nhấn phÁi chußt lên package cần thêm láp vào, chọn New → Class

Chú ý: Tên áp luôn b ắt đÅu b ằng 1 ký t ự hoa Đ¿t theo ki Ãu TitleCase

Bắt đầu viÁt code Eclipse hỗ trÿ c¢ chÁ code completion rất tát Các b¿n luôn nhß phím Ctrl-SpaceBar để Eclipse hián lên các suggestion

Bài 6 Thực thi ch°¢ng trình

Nhấn chußt phÁi lên láp cần ch¿y, chọn menu Run As-> Java Application

Trang 7

Hoặc nhấn F11 để ch¿y tÁp tin hián t¿i, còn Ctrl+F11 biên dịch và ch¿y toàn bß project

Eclipse s¿ tự đßng biên dịch code và báo lỗi

NÁu b¿n có lỗi hay warning thì bên trái của dòng lỗi Ví dụ nh° sau:

Bài 7 Chán lo¿i giao dißn làm vißc

1 Khái đßng Eclipse IDE

2 Chọn Windows\Open Perspective\Other

Chọn Perspective Java(Default)

Trang 8

Module 0 Làm quen vái Eclipse IDE Đóng Welcome screen KÁt quÁ

Bài 8 Đổi tên (project, package, class&)

Nhấn chọn tên cần đổi á cửa sổ Package Explorer → F2 → đánh tên mái là xong

Bài 9 VÃn đÁ gõ ti¿ng Vißt (Unicode)

Java sử dụng bÁng mã unicode nên viác gõ tiÁng viát là OK Để gõ đ°ÿc tiÁng viát, đÁm bÁo là project của b¿n phÁi đ°ÿc l°u vái bÁng mã UTF-8

Cách làm nh° sau: Nhấn chußt phÁi lên Project, chọn Properties Chọn mục resources nh° hình

Điều này cho phép project b¿n chọn có sử dụng Unicode

Để cho tất cÁ tā project lúc thiÁt lÁp về sau sử dụng Unicode (khßi mắc công mỗi Project mỗi thiÁt lÁp), ta làm nh° sau: Vào menu Window->References, chọn mục General-> Workspace nh° hình

Trang 9

Nhấn Apply Tā đây, bất cÿ project nào t¿o ra đều hỗ trÿ Unicode

Bài 10 Export file jar tự ch¿y (executable jar file)

Nhấn chußt phÁi lên Project cần export, chọn Export

Chọn Runnable JAR file nh° hình Nhấn Next

Chọn Lauch configuration Chọn th° mục chÿa cũng nh° tên file jar Nhấn Finish

Thực thi jar file d°ái d¿ng command-line:

Trang 10

Module 0 Làm quen vái Eclipse IDE

NÁu Project của á c¢ chÁ GUI thì có thể má file jar của bằng Java Plaform SE library nh° hình

Bài 11 Thêm th° vißn cho Project

1 Thêm th° vián jar

Để them th° vián Jar mình th°ßng làm theo 2 b°ác sau

• T¿o thự mục chÿa File jar (th°ßng để tên là lib ) -> copy file jar và th° vián đó

• Thực hián add jar file bằng cách : chọn chußt phÁi file jar -> Build Path -> Add to Build Path

là xong ( nh° hình bên d°ái )

Trang 11

Chọn Build Path -> Configure Build Path

Source : Phần này b¿n có thể add mßt folder source hoặc là link đÁn th° mục source nào đó

Project : T°¢ng tự nh° source nh°ng đây là refer sang mßt project cùng workspace

Bài 12 Phím tắt hay dùng

1 Mßt sá editing template hay dùng:

Gõ main sau đó nhấn Ctrl-Spacebar s¿ cho publicstaticvoidmain(String[]args){}

Gõ sysout sau đó nhấn Ctrl-Spacebar s¿ cho System.out.println();

Để tìm hiểu thêm, vào menu Window->Reference

Trang 12

Module 0 Làm quen vái Eclipse IDE

2 Các phím tắt hay dùng:

Sử dụng phím tắt trong Eclipse s¿ giúp b¿n thao tác nhanh h¢n thay vì phÁi click chußt nhiều lần và trông chuyên nghiáp h¢n Trong Eclipse, vào menu Help->Key Assitst hoặc nhấn tổ hÿp Ctrl-Shift-L để hiển thị

Trang 13

Module 1 JAVA CN BÀN

M ục tiêu:

Làm quen với ngôn ngữ lập trình Java

Hiểu được cấu trúc chương trình Java, cách biên dịch và chạy chương trình dùng NNLT Java

Hiểu và áp dụng được nhập xuất dữ liệu, các toán tử trong ngôn ngữ lập trình Java

Hiểu và áp dụng được các cấu trúc điều khiển, cấu trúc lặp trong ngôn ngữ lập trình Java

Yêu cầu:

Bài làm lưu trong workspace có tên MaSV_HoTen

Tạo project tên Module01

Lần lượt tạo các package bai01, bai02, bai03 ứng với 3 phần của Module 1

Mỗi bài tập là một class với tên tương ứng, ví dụ Bai01, Bai02,…

Nhắc l¿i: Cấu trúc của mßt ch°¢ng trình viÁt bằng ngôn ngữ lÁp trình Java

package packageName; // 1 Khai báo tên gói n ếu cần

import java.util.Scanner; // 2 Khai báo thư viện có sẵn nếu cần dùng

public class ClassName // 3 Khai báo tên l ớp

{

/* các ghi chú liên quan */

public void methodName() // 4 Khai báo tên phương thức và tham số

{

Trang 14

Module 1 Java cn bÁn

Bài 1 PHÄN LIÊN QUAN Đ¾N NH¾P XUÂT

ViÁt ch°¢ng trình xuất ra màn hình dòng chữ <Hello World!=

L°u ý sử dụng lánh xuất ra màn hình:

▪ Sytstem.out.print(): xuất ra màn hình mßt chuỗi hay mßt giá trị (không xuáng dòng)

▪ Sytstem.out.println(): xuất ra màn hình mßt chuỗi hay mßt giá trị (có xuáng dòng)

▪ Sytstem.out.printf(): xuất ra màn hình mßt chuỗi theo định d¿ng t°¢ng tự nh° ngôn ngữ lÁp trình C++

Cú pháp: System.out.printf(<format-string=, [arg1, arg2, arg3, …]);

- %d: sá nguyên (byte, short, int, long)

- %f: sá thực (float, double)

- %c: ký tự (char)

- %s: chuỗi (string)

- %0: fill sá 0

- Đß chính xác của sá thực: %5.3f: đß chính xác phần lẻ của sá trong format-string là 3

- Dấu – dùng để canh trái, mặc định canh phÁi

Trang 15

ViÁt ch°¢ng trình nhÁp vào tên của mình và xuất ra màn hình <Hello + Tên=

HD:

▪ Để nhÁp dữ liáu tā bàn phím, dùng th° vián Scanner bằng cách:

import java.util.Scanner;

▪ Khai báo đái t°ÿng

Scanner sc = new Scanner(System.in);

▪ Dữ liáu nhÁp vào là sá nguyên:

Trang 16

Module 1 Java cn bÁn

Bài 2 PHÄN LIÊN QUAN Đ¾N CÁC TOÁN TĂ

Thao tác vái toán tử sá học

Thao tác vái toán tử nái chuỗi

Thao tác vái toán tử 1 ngôi

Trang 17

Thao tác vái toán tử pre-increment và post-increment

Trang 18

Module 1 Java cn bÁn

Bài 3 PHÄN CÂU TRÚC L¾P VÀ CÂU TRÚC ĐIÀU KHIÂN

Cấu trúc if-else, switch case

Cấu trúc while, do while và for

• Cấu trúc if, if else

• Cấu trúc switch

• Cấu trúc lặp: for, while, do while

Trang 19

Phát sinh ng¿u nhiên sá sử dụng láp Random Láp Random nằm trong gói java.util có 1 sá ph°¢ng thÿc:

boolean

nextBoolean(); A true or false value

int nextInt() An integral value between Integer.MIN_VALUE andInteger.MAX_VALUE

long nextLong() A long integral value between Long.MIN_VALUEand Long.MAX_VALUE

float nextFloat() A decimal number between 0.0 (included) and 1.0 (excluded)

double nextDouble() A decimal number between 0.0 (included) and 1.0 (excluded)

import java.util.Random;

public class RandomExercise {

public static void main(String[] args) {

Random rd = new Random();

int = rd.nextInt();

System.out.println( "Number: " + n);

} }

Phát sinh sá ng¿u nhiên nằm trong mßt vùng (min, max)

Trang 20

Module 1 Java cn bÁn int min = 65 ;

int max = 80 ;

Random r = new Random ();

int i1 = r.nextInt(max - min + 1 ) + min;

L°u ý: NÁu r.nextInt(max)s¿ trÁ về giá trị giữa 0 và max

ViÁt ch°¢ng trình in ra tổng 1+3+5 … +n nÁu n là sá chẵn, 2+4+6+ … n nÁu n là sá lẻ

ViÁt ch°¢ng trình giÁi ph°¢ng trình bÁc 1

ViÁt ch°¢ng trình tìm USCLN của 2 sá nhÁp vào

ViÁt ch°¢ng trình kiểm tra sá nhÁp vào có phÁi là sá nguyên tá hay không

Tính tổng các sá nguyên tá nhß h¢n N

Tính tổng N sá nguyên tá đầu tiên

ViÁt ch°¢ng trình in ra sá lần kí tự 8a9 xuất hián trong mßt chuỗi

ViÁt hàm tách chuỗi gác thành chuỗi con

VD: chuỗi gác S = <Bai Tap Mon Lap Trinh Java=, chuỗi sau khi tách là

ViÁt hàm để đÁm sá l°ÿng ký tự là sá có trong chuỗi s Chuỗi s đ°ÿc nhÁp tā bàn phím HD: Dùng mã ASCII

để kiểm tra hoặc dùng class Character: Character.isDigit(ký tự) để kiểm ký tự có phải là số hay không

ViÁt ch°¢ng trình in ra tổng của 10 sá chẵn đầu tiên

ViÁt ch°¢ng trình in ra những sá lẻ tā 1 đÁn 99

ViÁt ch°¢ng trình xuất ra tổng các sá là bßi sá của 7 (tā 1 đÁn 100)

ViÁt ch°¢ng trình in ra giá trị lán nhất và nhß nhất trong mßt dãy các giá trị user đã nhÁp

ViÁt ch°¢ng trình đọc mßt giá trị nguyên tā bàn phím và in ra sá đó là sá chẵn, lẻ hoặc zero

ViÁt ch°¢ng trình in ra bßi sá của 3 tā 300 đÁn 3

ViÁt ch°¢ng trình nhÁp vào sá nguyên n và thực hián: Xuất ra màn hình n sá đầu tiên của chuỗi Fibonaci (có hai giá trị đầu là 1 và 1)

ViÁt ch°¢ng trình in ra những hình sau: (mỗi hình sử dụng những vòng lặp khác nhau)

Trang 22

Module 2 Các khái niám c¢ bÁn LT HĐT

M ục tiêu:

Cài đặt lớp đối tượng

Tạo, sử dụng đối tượng

Định nghĩa getter/setter cho thuộc tính (kiểm tra ràng buộc trên thuộc tính nếu có)

Tạo constructor có kiểm soát tham số truyền cho thuộc tính

Tạo cơ chế liên lạc giữa các lớp

▪ Ghi chú cho lớp, phương thức (theo dạng document)

Yêu cầu:

Bài làm lưu trong workspace có tên MaSV_HoTen

Tạo project tên Module02

Mỗi bài làm trong một package có tên package là bai01, bai02,…

▪ Bài tập bắt buộc: 1, 3, 4, 5, 7, 8, 9

Viết documentation comment cho class

Định nghĩa mßt láp trong UML:

Cách truy xuất (visibility):

public class Car {

private String carColor ;

private double carPrice = 0.0;

public String getCarColor(String model ) {

return carColor ; }

public double getCarPrice(String model ) {

return carPrice ; }

}

Trang 23

Bài 1

BiÁt láp tọa đß có:

▪ Các thußc tính: tọa đß x, tọa đß y và tên tọa đß

▪ Các ph°¢ng thÿc thiÁt lÁp (set), lấy (get) thông tin x, y và tên tọa đß

▪ Các ph°¢ng thÿc khái t¿o: mßt constructor mặc định và mßt construtor đầy đủ tham sá

▪ Ph°¢ng thÿc toString trÁ về thông tin theo m¿u: tên tọa đß(x,y)

Yêu cầu:

a V¿ l°ÿc đồ láp UML cho láp tọa đß

b Cài đặt láp tọa đß theo thiÁt kÁ

c Xây dựng láp khác chÿa hàm main cho phần kiểm nghiám

Bài 2

a ViÁt láp Sinh viên nh° sau:

Attributes:

▪ Mã sinh viên (sá nguyên>0),

▪ Họ tên (chuỗi, không đ°ÿc rỗng),

▪ Điểm LT, điểm TH (sá thực, thußc [0.0,10.0])

Methods:

▪ Constructor mặc định (gán giá trị mặc định),

▪ Constructor nhÁn đầy đủ thông tin để khái t¿o giá trị cho tất cÁ các biÁn instance,

▪ Các getter và setter cho mỗi thußc tính,

▪ Tính điểm trung bình (trung bình=(điểm LT + điểm TH)/2),

▪ Ph°¢ng thÿc toString dißn tÁ đái t°ÿng á d¿ng chuỗi gồm 4 cßt là mã sinh viên, họ tên, điểm LT, điểm TH, điểm TB

Yêu cầu kiểm tra ràng bußc dữ liáu, gán giá trị mặc định khi dữ liáu không hÿp lá

b Xây dựng class chÿa hàm main: t¿o 3 đái t°ÿng sinh viên sv1, sv2, sv3, trong đó:

▪ sv1 chÿa thông tin của chính mình (t¿o bằng constructor đủ thông sá, thông tin biÁt rồi khßi nhÁp

Trang 24

Module 2 Các khái niám c¢ bÁn LT HĐT

▪ In bÁng danh sách sinh viên gồm 4 cßt là MSSV, họ tên, điểm LT, điểm TH, điểm TB (bÁng có 3 dòng cho 3 sinh viên) nh° hình bên d°ái

HD: Thông tin sinh viên in trên mßt dòng có định d¿ng Sử dụng String.format(<chuỗi định d¿ng=, đái sá

1, đái sá 2, ….); Trong đó chuỗi định d¿ng giáng c++, ví dụ:

<%-30s=: chuỗi, chiÁm 30 ký tự, dấu trā canh lề trái

a Cài đặt láp hình tam giác, biÁt tam giác có 3 c¿nh ma, mb, mc, viÁt các ph°¢ng thÿc sau:

- Constructor mặc định (không tham sá)

- Constructor đủ tham sá: nếu giá trị truyền có số âm hoặc nếu 3 giá trị không lập thành hình tam

giác thì gá n 3 thuộc tính bằng 0

- Các ph°¢ng thÿc getter/setter: nếu giá trị không hợp lệ thì không gán (giữ lại giá trị cũ)

- Các ph°¢ng thÿc tính chu vi, ph°¢ng thÿc tính dián tích

- Ph°¢ng thÿc trÁ về thông tin kiểu tam giác (th°ßng, cân, đều, không phÁi tam giác)

- Ph°¢ng thÿc toString để dißn tÁ đái t°ÿng á d¿ng chuỗi gồm: thông tin 3 c¿nh, kiểu tam giác, chu

vi, dián tích

Trang 25

b ViÁt hàm main t¿o 5 hình tam giác: 2 hình vi ph¿m ràng bußc, 3 hình là tam giác th°ßng, cân, đều Xuất thông tin các hình này theo d¿ng bÁng

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

- Công thức tính diện tích tam giác: với

Bài 4

Cho mô tÁ bài toán:

Sá giao thông cần theo dõi viác đng ký xe (Vehicle) của ng°ßi dân, biÁt mỗi xe cần l°u các thông tin là:

ch ủ xe, loại xe, trị giá xe (>=0), dung tích xylanh (>=0) Dựa vào thông tin trị giá xe và dung tích xylanh, sá giao

thông cũng tính mÿc thuÁ phÁi đóng tr°ác b¿ khi mua xe nh° sau:

- D°ái 100cc, 1% trị giá xe

- Tā 100 đÁn 200cc, 3% trị giá xe

- Trên 200cc, 5% trị giá xe

a Hãy thiÁt kÁ và cài đặt láp Vehicle vái các attributes và methods phù hÿp (có kiểm tra ràng bußc dữ liáu) Láp phÁi có các constructor và phÁi bÁo đÁm tính encapsulation

b Xây dựng class chÿa hàm main, có các công viác:

- T¿o 3 đái t°ÿng Vehicle xe1, xe2, xe3 Dữ liáu đ°ÿc gán sẵn hoặc cho ng°ßi dùng nhÁp

- Xuất bÁng kê khai tiền thuÁ tr°ác b¿ của các xe nh° m¿u:

M¿u kÁt xuất của ch°¢ng trình

Bài 5 *

Láp HangThucPham mô tÁ mßt hàng hóa là hàng thực phẩm trong kho của mßt cửa hàng bán thực phẩm, có các thußc tính: mã hàng (không cho phép sửa, không được để rỗng), tên hàng (không được để rỗng,

m ặc định là <xxx=), đ¢n giá (>=0), ngày sÁn xuÃt (phải trước ngày hiện tại, mặc định là ngày hiện tại) và ngày

h¿t h¿n (phải sau ngày sản xuất, mặc định là ngày sản xuất) Yêu cầu:

a ViÁt các ph°¢ng thÿc setters/getters cho láp HangThucPham Trong các setter, nếu dữ liệu muốn gán không hợp lệ thì gán giá trị mặc định cho phép t°¢ng ÿng của tr°ßng đó

b T¿o mßt constructor có đầy đủ tham sá và mßt constructor có tham sá là mã hàng Nếu mã hàng rỗng thì phát sinh lỗi và không cho phép tạo đối tượng đó, các giá trị khác nếu không hợp lệ thì để mặc định

c ViÁt ph°¢ng thÿc kiểm tra mßt hàng thực phẩm đã hÁt h¿n ch°a

Trang 26

Module 2 Các khái niám c¢ bÁn LT HĐT

d Ph°¢ng thÿc toString trÁ về chuỗi chÿa thông tin của hàng thực phẩm, bao gồm thông tin đã hÁt h¿n

ch°a Trong đó: định dạng đơn giá có phân cách hàng nghìn; định dạng kiểu ngày là dd/MM/yyyy

e ViÁt láp khác chÿa hàm main: T¿o 3 đái t°ÿng, trong đó có mßt đái t°ÿng có ngày hÁt h¿n tr°ác ngày sÁn xuất Xuất thông tin 3 mặt hàng này nh° m¿u:

f Kiểm thử láp HangThucPham vái các ràng bußc đã cho

HD:

- Kiểm tra mã hàng:

- Kiểu ngày: dùng lớp định nghĩa sẵn LocalDate

- Kiểm tra ngày này trước hoặc sau ngày kia: dùng phương thức isBefore, isAfter

- Kiểm tra hàng đã hết hạn chưa:

<<property get>>

+ getAccountNumber() : long + getBalance() : double

Ngày đăng: 21/06/2023, 22:07

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w