[Java1_15] Luyện Tập OOP Composition - Code Lean
Có thể bạn quan tâm
Bài đăng nổi bật
Học Ngành Gì KHÔNG THẤT NGHIỆP
13:22 Trang chủJava1 [Java1_15] Luyện Tập OOP Composition 11:57 0 Nhận xét
2. Luyện tập về OOP Composition
2.1 Ex: Ví dụ về hai class Author và Book (Giới thiệu về OOP Composition)
Bài tập đầu tiên này sẽ dẫn bạn qua tất cả các khái niệm liên quan đến Thành phần OOP (OOP Composition)
Một lớp được gọi Author (như thể hiện trong sơ đồ lớp) được thiết kế để mô hình hóa tác giả của một cuốn sách. Nó chứa: - Ba biến private đối tượng: name( String), email( String) và gender( char của một trong hai 'm'hoặc 'f');
- Một constructor để khởi tạo name, emailvà gendervới các giá trị nhất định;
- public Author (String name, String email, char gender) {......}
- (Không có hàm tạo mặc định cho Tác giả, vì không có mặc định cho tên, email và giới tính.)
- public getters / setters: getName(), getEmail(), setEmail(), và getGender();(Không có setters cho namevà gender, vì những thuộc tính này không thể thay đổi.)
- Một toString()phương thức trả về " Author[name=?,email=?,gender=?]", ví dụ: " Author[name=Tan Ah Teck,[email protected],gender=m]".
Class Book được thiết kế (như hiển thị trên class diagram) để mô hình hoá một cuốn sách được viết bởi một tác giả one author. Nó chứa: - Bốn private instance variables: name (String), author (của class Author mà bạn vừa tạo, lưu ý rằng trong trường hợp này thì mỗi cuốn sách có một và chỉ một tác giả), price(double), và qty (int);
- Hai hàm tạo (constructor):
- public Book (String name, Author author, double price) { ...... } public Book (String name, Author author, double price, int qty) { ...... }
- public methods getName(), getAuthor(), getPrice(), setPrice(), getQty(), setQty().
- Phương thức toString() sẽ trả về "Book[name=?,Author[name=?,email=?,gender=?],price=?,qty=?". Bạn có thể tái sử dụng Author’s toString().
- In ra name và email của tác giả từ một Book nào đó. (Gợi ý : aBook.getAuthor().getName(), aBook.getAuthor().getEmail()).
- Giới thiệu các phương pháp mới gọi getAuthorName(), getAuthorEmail(), getAuthorGender()trong lớp Book để trả lại name, email và gender các tác giả của cuốn sách. Ví dụ,
- public String getAuthorName() { return author.getName(); // cannot use author.name as name is private in Author class }
2.2 Luyện Tập (Nâng Cao): Book và Author
Tiếp tục luyện về Class - trong đó Một mảng của đối tượng coi như một Instance Variable
- Các constructor lấy một mảng Author(ví dụ, Author[]), thay vì một Author thể hiện. Trong thiết kế này, một khi một Book thể hiện là hàm tạo, bạn không thể thêm hoặc xóa tác giả.
- Các toString()phương pháp sẽ trở lại " Book[name=?,authors={Author[name=?,email=?,gender=?],......},price=?,qty=?]".
- Viết mã cho class Book. Bạn sẽ sử dụng lại các class Author được viết trước đó.
- Viết trình test driver (được gọi TestBook) để kiểm tra lớp Book.
2.3 Ex: MyPoint Class
Một lớp được gọi MyPoint, mô hình điểm 2D x và y tọa độ, được thiết kế như thể hiện trong sơ đồ lớp. Nó chứa: - Hai biến đối tượng x( int) và y( int).
- Hàm tạo mặc định (hoặc "không đối số") xây dựng một điểm tại vị trí mặc định của (0, 0).
- Một hàm tạo quá tải xây dựng một điểm với các tọa độ xvà ytọa độ đã cho.
- Getter và setter cho các biến thể hiện x và biến thể hiện y .
- Một phương pháp setXY()để đặt cả hai x và y.
- Một phương thức getXY()trả về x và y trong intmảng 2 phần tử .
- Một toString()phương thức trả về một mô tả chuỗi của thể hiện ở định dạng " ".(x, y)
- Một phương thức được gọi là distance(int x, int y)trả về khoảng cách từ điểm này tới điểm khác tại toạ điển đã cho(x, y), ví dụ
- MyPoint p1 = new MyPoint(3, 4); System.out.println(p1.distance(5, 6));
- Một ví dụ khác về gọi hàm tính khoảng cách, trong trường hợp này thì x,y của điểm 2 là (5,6)MyPoint p1 = new MyPoint(3, 4); MyPoint p2 = new MyPoint(5, 6); System.out.println(p1.distance(p2));
- Một ví dụ khác nữa về tính khoảng cách, trong trường hợp này thì x,y của điểm 2 là (0,0)MyPoint p1 = new MyPoint(3, 4); System.out.println(p1.distance());
- Viết mã cho lớp MyPoint. Cũng viết một chương trình thử nghiệm (được gọi TestMyPoint) để kiểm tra tất cả các phương thức được định nghĩa trong lớp.Gợi ý:
- // Overloading method distance() // This version takes two ints as arguments public double distance(int x, int y) { int xDiff = this.x – x; int yDiff = ...... return Math.sqrt(xDiff*xDiff + yDiff*yDiff); } // This version takes a MyPoint instance as argument public double distance(MyPoint another) { int xDiff = this.x – another.x; ....... } // Test program to test all constructors and public methods MyPoint p1 = new MyPoint(); // Test constructor System.out.println(p1); // Test toString() p1.setX(8); // Test setters p1.setY(6); System.out.println("x is: " + p1.getX()); // Test getters System.out.println("y is: " + p1.getY()); p1.setXY(3, 0); // Test setXY() System.out.println(p1.getXY()[0]); // Test getXY() System.out.println(p1.getXY()[1]); System.out.println(p1); MyPoint p2 = new MyPoint(0, 4); // Test another constructor System.out.println(p2); // Testing the overloaded methods distance() System.out.println(p1.distance(p2)); // which version? System.out.println(p2.distance(p1)); // which version? System.out.println(p1.distance(5, 6)); // which version? System.out.println(p1.distance()); // which version?
- Viết một chương trình định vị 10 điểm trong một mảng của MyPoint, và khởi (1, 1), (2, 2)... (10, 10).Gợi ý : Bạn cần phân bổ mảng, cũng như mỗi trong số 10 MyPoint instance. Nói cách khác, bạn cần phát hành 11 new, 1 cho mảng và 10 cho các MyPoint instance. Write a program that allocates 10 points in an array of MyPoint, and initializes to (1, 1), (2, 2), ... (10, 10).Hints: You need to allocate the array, as well as each of the 10 MyPoint instances. In other words, you need to issue 11 new, 1 for the array and 10 for the MyPoint instances.
- MyPoint[] points = new MyPoint[10]; // Declare and allocate an array of MyPoint for (int i = 0; i < points.length; i++) { points[i] = new MyPoint(...); // Allocate each of MyPoint instances } // use a loop to print all the points
2.4 Ex: Lớp MyCircle và MyPoint
Một lớp được gọi MyCircle, mô hình một vòng tròn với a center (x,y)và a radius, được thiết kế như thể hiện trong sơ đồ lớp. Các MyCircle sử dụng một thể hiện của MyPoint (được tạo trong bài tập trước) như nó center. Lớp chứa: - Hai biến đối tượng private: center(một thể hiện của MyPoint) và radius( int).
- Một hàm tạo xây dựng một vòng tròn với tâm ( x, y) và radius.
- Một hàm tạo quá tải xây dựng một thể hiện đã MyCirclecho MyPointlà centervà radius.
- Một constructor mặc định xây dựng một vòng tròn có tâm tại (0,0)và bán kính của 1.
- Getters và setters khác nhau.
- Một toString()phương thức trả về một mô tả chuỗi của thể hiện này ở định dạng " ". Bạn sẽ tái sử dụng của .MyCircle[radius=r,center=(x,y)]toString()MyPoint
- getArea()và getCircumference()các phương thức trả về diện tích và chu vi của thisvòng tròn trong double.
- Một distance(MyCircle another)phương thức trả về khoảng cách của các trung tâm từ thisthể hiện và thể hiện đã cho MyCircle. Bạn nên sử dụng MyPoint's distance()phương pháp để tính toán khoảng cách này.
2.5 Ex: The MyTriangle and MyPoint Classes
Một lớp được gọi MyTriangle, mô hình một tam giác có 3 đỉnh, được thiết kế như hình. Các MyTrianglelớp học sử dụng ba MyPointtrường hợp (được tạo trong việc thực hiện trước đó) là ba đỉnh của nó. Nó chứa: - Ba privatebiến Ví dụ v1, v2, v3(trường hợp MyPoint), cho ba đỉnh.
- Một nhà xây dựng mà xây dựng một MyTrianglevới ba bộ tọa độ, v1=(x1, y1), v2=(x2, y2), v3=(x3, y3).
- Một constructor quá tải xây dựng MyTriangle với 3 đối tượng MyPoint.
- Một toString()phương thức trả về một mô tả chuỗi của thể hiện ở định dạng " ".MyTriangle[v1=(x1,y1),v2=(x2,y2),v3=(x3,y3)]
- Một getPerimeter()phương thức trả về độ dài của chu vi. Bạn nên sử dụng distance()phương pháp chu phương pháp MyPoint để tính toán chu vi.
- Một phương thức printType()in " equilateral" nếu tất cả ba cạnh bằng nhau ", isosceles" nếu bất kỳ hai trong ba cạnh bằng nhau hoặc " scalene" nếu ba cạnh khác nhau.
2.6 Ex: The MyRectangle and MyPoint Classes
Thiết kế một MyRectanglelớp bao gồm hai thiết kế bao gồm haiMyPoint trường hợp là các góc trên cùng bên trái và dưới cùng bên phải của nó . Vẽ sơ đồ lớp, viết mã và viết trình điều khiển kiểm tra.2.7 Ex: The Customer and Invoice classes
Các Customermô hình lớp khách hàng được thiết kế như thể hiện trong sơ đồ lớp. Viết mã cho Customerlớp và trình điều khiển kiểm tra để kiểm tra tất cả các publicphương thức.
Các Invoicelớp, thiết kế như thể hiện trong sơ đồ lớp, soạn một Customerví dụ (bằng văn bản trước đó) là thành viên của nó. Viết mã cho Invoicelớp và trình điều khiển kiểm tra để kiểm tra tất cả các publicphương thức. 2.8 Ex: The Customer and Account classes
Các Customermô hình lớp khách hàng được thiết kế như thể hiện trong sơ đồ lớp. Viết mã cho Customerlớp và trình điều khiển kiểm tra để kiểm tra tất cả các publicphương thức.
Các Accountmô hình lớp một tài khoản ngân hàng, thiết kế như thể hiện trong sơ đồ lớp, soạn một Customerví dụ (bằng văn bản trước đó) là thành viên của nó. Viết mã cho Accountlớp và trình điều khiển kiểm tra để kiểm tra tất cả các publicphương thức. Java1 JavaCore You might like
Hiện thêmPost a Comment
Đăng nhận xét
Mới hơn Cũ hơnFollow Us
Chủ Đề Tôi Quan Tâm ;)
- .Net
- .net core
- Agile
- AI
- AngularJS
- Anroid
- AP
- Azure
- BDW
- Bootstrap
- c
- C#
- Cấu Trúc Dữ Liệu và Giải Thuật
- CodeLean
- CSDL
- CSS
- Database
- Design Pattern
- DesignThinking
- DevOps
- Docker
- Git
- github
- HTML
- Hướng_Nghiệp
- Index
- ISA
- Java
- Java1
- Java2
- JavaAdvanced
- JavaCore
- JavaScript
- JSP & Servlet
- Laravel Framework
- Laravel9
- Lập trình C
- Lập trình cho trẻ
- LINQ
- MLJ
- MySQL
- NodeJS
- OOAD
- PHP
- Programming
- Python
- QA
- React Native
- Review Sách
- Spring Boot
- Spring Framework
- SQL
- Teaching
- Test
- Thiết Kế Website
- Tools
- TypeScript
- Web Development
- WebAPI
Most Popular
Chuẩn hoá dữ liệu là gì? 1NF, 2NF, 3NF & BCNF với các ví dụ
11:57[MySQL 05] Mô hình ER là gì và ví dụ
12:08Tìm Phủ Tối thiểu của một Hàm
12:29Xác định khóa, Tìm phủ tối thiểu, Chuẩn hóa dữ liệu
16:36Big O: Cách tính độ phức tạp của thời gian và không gian
16:37Bắt đầu học Node.js với Visual Studio Code
10:07[Web API] Hướng dẫn từ cơ bản tới nâng cao Web API ASP.NET
19:21[MySQL 02] Hướng dẫn sử dụng MySQL Workbench
11:32Hướng dẫn sửa cấu hình để chạy Dự Án Laravel từ Source Code có sẵn
14:59[JSP & Servlet] Tạo Web Application JSP Servlet Sử dụng JSTL với Tomcat 10 trên IntelliJ
21:27Biểu mẫu liên hệ
Từ khóa » Viết Chương Trình Java Theo Cho Bài Book Và Author Biết Rằng Mỗi Book được Viết Bởi Nhiều Author
-
Bài Tập Lập Trình Hướng đối Tượng - Composition - Deft Blog
-
Bài Tập Java OOP: Tạo Lớp Sách Và Tác Giả | Codelearn
-
Tìm Hiểu Kỹ Hơn Về Class Và Object | Học Lập Trình Java Căn Bản
-
(PDF) Java Practice Book (1) | Phuong Nguyen The
-
[PDF] OOP_2013.pdf - VNU-UET
-
OOP Inheritance & Polymorphism - Java Programming Tutorial
-
Lập Trình Hướng đối Tượng Java - Bạn đã Thực Sự Hiểu Rõ?
-
Làm Cách Nào để Bảo Vệ Khỏi Việc đưa Vào SQL Khi Mệnh đề ...
-
[PDF] MỤC LỤC - Khoa CNTT
-
Java Bài 20: Phương Thức Khởi Tạo - Constructor
-
Admin, Author At Xin Chào! Mình Là Dzung - Page 5 Of 13
-
Java — Dấu Vết Ngăn Xếp Là Gì Và Làm Cách Nào Tôi Có Thể Sử Dụng ...
-
Xu Hướng 7/2022 # So Sánh Về Java Và Kotlin ? # Top View
