30/09/2018, 20:45

Thao tác giữa các lớp trong OOP

Mình có 1 class danh_sách_khoa gồm tập hợp các khoa . Trong đó 1 phần tử khoa bao gồm : mã khoa và tên khoa .

Sau đó mình có một danh sách sinh viên có thông tin là mã khoa. Minh có method xuat() . lấy thông tin mã khoa của sinh viên tìm kiếm qua bên class danh_sach_khoa để xuất ra tên khoa.

Mình không biết có cách nào hay hơn là truyền đối số danh sách vào hay không ?

KYN viết 22:49 ngày 30/09/2018

ko rõ lắm câu hỏi, nhưng để tìm ra tên khoa thì trong class danhsachkhoa chỉ cần 1 hàm, getTenKhoa( int maKhoa) , tham số là maKhoa, có được khi lấy từ sinhvien.

Thìn Đặng Văn viết 23:00 ngày 30/09/2018

ý mình hỏi là ngoài cách phương thức xuất trong lớp sinh viên truyền tham số là danh sách khoa để xuất ra thông tin tên Khoa thì còn cách nào khác không ?
vì dụ như thế này
public void xuat(ds_khoa dskhoa){
System.out.println("MSSV: " + mssv);
System.out.println("Ho ten : " + hoten);
System.out.println("Gioi tinh : " + gioitinh);
System.out.println("Sdt : " + sdt);
System.out.println("Diem TB : " + diemtb);
String s= dskhoa.getTenkhoa(makhoa)
System.out.println("Khoa " + s);
}
Ý mình hỏi là ngoài cách này… còn cách nào có thể truy xuất qua bên danh sách khoa để dò tìm nữa mà k cần phải truyền tham số không

KYN viết 23:01 ngày 30/09/2018

không cần truyền tham số
tham khảo Singleton pattern :
http://www.tutorialspoint.com/design_pattern/singleton_pattern.htm

en.wikipedia.org

Singleton pattern

In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to one object. This is useful when exactly one object is needed to coordinate actions across the system. The concept is sometimes generalized to systems that operate more efficiently when only one object exists, or that restrict the instantiation to a certain number of objects. The term comes from the mathematical concept of a singleton. There are some who are critical of the s...

 public class SingleObject {

   //create an object of SingleObject
   private static SingleObject instance = new SingleObject();

   //make the constructor private so that this class cannot be
   //instantiated
   private SingleObject(){}

   //Get the only object available
   public static SingleObject getInstance(){
      return instance;
   }

   public void showMessage(){
      System.out.println("Hello World!");
   }

khi sử dụng chỉ cần gọi tênClass.getInstance().tenPhuongthuc là ok

 public class SingletonPatternDemo {
 public static void main(String[] args) {
  //illegal construct
  //Compile Time Error: The constructor SingleObject() is not visible
  //SingleObject object = new SingleObject();
  //Get the only object available
  SingleObject object = SingleObject.getInstance();
  //show the message
  object.showMessage();

}
}

Thìn Đặng Văn viết 22:47 ngày 30/09/2018

Mình có các class như sau
public class Khoa(){
private String makhoa;
private String tenkhoa;
}
public class Danh_sach_khoa(){
private LinkedList danhsach=new LinkedList<>();
public String timkhoa(String s){
for(Khoa temp : danhsach){
if(s.equals(temp.getMakhoa())== true){
return temp.getTenkhoa();
}
}
return “Khong co trong danh sach”;
}
}
Nếu mà chỗ này mình khai báo kiểu static biến danh sách thì danh_sach_khoa sẽ không thể tạo ra các đối tượng khác .
Còn nếu mà khai báo private static Danh_sach_khoa instance = new Danh_sach_khoa() thì trong biến danh sách lại không có các thông tin nhập vào để duyệt tìm.
Cách này mình nghĩ không đc… Bạn còn hướng dẫn nào khác không…

Tất Huân viết 23:01 ngày 30/09/2018

Nếu trong classSinhVien bạn còn dùng đến dsKhoa thì bạn có thể khai báo ds_Khoa như 1 biến của class SinhVien. Vậy thì khi xuất không cần truyền biến vào nữa.
Đây không hẳn là một cách tối ưu nhưng nó là 1 cách khác cho bạn tham khảo.

Nguyễn Hải Đăng viết 22:48 ngày 30/09/2018

Tại sao Singleton lại có ý nghĩa ở đây?

Bài liên quan
0