Gửi bởi
Wazi Armstrong
Với mình chia sẻ kinh nghiệm đồng nghĩa với ném gạch. Mình đã post bài lên thì sẵn sàng đợi người khác ném gạch. Như thế mới nhớ lâu đc. Vết đau thường nhớ lâu mà [IMG]images/smilies/daydreaming.gif[/IMG]
Bài của bạn là Giải phương trình Bậc 2, sử dụng phương pháp lập trình hướng đối tượng đúng không.
Vậy cứ coi tất cả là đối tượng đi
1. Phương thức main thường không nói đến trong thiết kế vì nó chỉ như chìa khóa để khởi động trong chương trình.
2. Có thể hình dung ra chính ta sẽ có (các) lớp là:
2.1 Chương trình giải phương trình bậc 2 (TwoDegreeEquationSolver) Lớp này có hàm khởi tạo với 3 tham số chính là 3 hệ số a, b, c của phương trình.
Phương thức solve();
2.2 Do kết quả của PTB2 có nhiều trường hợp nên đầu ra có thể tạo 1 class riêng cho nó, gọi là Result đi
Lớp Result sẽ có phương thức hasRoot() để kiểm tra xem phương trình có nghiệm hay không và phương thức getRoots() trả về một mảng là nghiệm của phương trình (mảng có thể có 0, 1, hoặc 2 phần tử, 0 trong trường hợp ko có nghiệm)
3. Hàm main() sẽ tiến hành đọc dữ liệu người dùng nhập vào, rồi khởi tạo 1 thể hiện của TwoDegreeEquationSolver, solve rồi nhận lấy kết quả ở đầu ra và xuất trả lại người dùng.
Thiết kế này không phải là tối ưu nhưng ít ra nó cũng dùng lại được cái core của chương trình (solve-> Result), bạn có thể đem nó cho vào 1 chương trình lớn hơn mà không phải sửa gì.
Nhược điểm trong thiết kế của bạn
1. Gộp chung xử lí IO với logic. Class phươngtrinh của bạn lại tồn tại phương thức nhap() ??? Một số trường hợp mình đã gặp trên diễn đàn này: sinhvien.nhap(); nguoi.nhap() rất vô lí!!!
2. Logic bạn rải rác khắp nơi và thường không đúng chức năng. Ví dụ trong hàm main(), tại sao việc giải một phương trình bậc 2 lại bắt đầu bằng việc tạo 1 đối tượng điều kiện??? rồi thì đối tượng này lại nhập, nhập cái gì??? trong khi đối tượng phương trình lại chẳng thấy đâu... Trong dieukien.kiemtra() tại sao lại có in kết quả???
Lời kết:
Lập trình hướng đối tượng sinh ra với mục đích làm đơn giản hóa logic, làm cho mã lệnh chương trình gần với thực tế hơn. Vì thế khi bạn lập trình hướng đối tượng, hãy suy nghĩ như 1 con người, đừng cố nghĩ như 1 cái máy.
Thân!
PS: Lâu lắm rồi không viết bài dài. Sắp đến bóng đá nên vội không format đẹp được [IMG]images/smilies/1.gif[/IMG]
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...