Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: làm sao điều khiển từng object trong <List> các object

  1. #1
    Ngày gia nhập
    12 2011
    Bài viết
    33

    Mặc định làm sao điều khiển từng object trong <List> các object

    Mình gặp phải vấn đề sau. Mong các ae chỉ giúp

    Phần mềm của em có class People ( tạm gọi là Class cha ): có các thuộc tính và phương thức Thưởng tết : thuongTet()
    Các class con : class Kế toán , nhân viên giao nhận , trưởng phòng đều kế thừa class People
    -> các class này đều kế thừa phương thức thưởng tết. Nhưng cách thức thực hiện Thưởng tết của từng class là khác nhau: VD :
    - kế toán thì mỗi lần "thưởng tết" thì sẽ là lương hiện tại x 2
    - còn trưởng phòng là lượng hiện tại x 3
    - nhân viên giao nhận x 1

    1 array list. VD ArrList<>. trong đó các phần tử là các đối tượng là thể hiện của các lớp Kế toán, nv giao nhận, trưởng phòng
    số đối tượng và thứ tự các đối tượng là không cố định. VD : ArrList[0] là kế toán , ArrList[1] là trưởng phòng , ..... Tùy từng thời điểm sẽ add thêm 1 đối tượng mới vào Array list ( Chính là khi có thêm 1 nhân viên mới gia nhập vào công ty )

    Em gặp vấn đề như sau : ở 1 thời điểm nào đó trong quá trình Runtime của phần mềm. Em muốn gọi phương thức thuongTet() của 1 đối tượng trọng ArrayList<> , VD đối tượng số 5 ( là kế toán ) thì em phải làm thế nào. VD : ArrList[5].thuongTet() thì không được. bởi vì tất cả các đối tượng trong arrray list khi đc add vào đều chuyển về kiểu object hết.
    Nếu phải ép kiểu của ArrList[5] về kiểu "kế toán" xong đó mới gọi phuơng thức như vậy rất mất thời gian và perfomance kém vì khi số lượng các kiểu con là rất nhiều có thể là vài trăm kiểu. và số đối tượng trong arrlist có thể là hàng chục nghìn đối tượng lại phải làm thao tác kiểm tra xem ArrList[5] thuộc kiểu gì rồi mới ép về đc.
    Vậy có cách nào giải quyết cho bài toán này của em không
    em chân thành cảm ơn
    Đã được chỉnh sửa lần cuối bởi bibi_1234 : 19-02-2013 lúc 02:42 PM.

  2. #2
    Ngày gia nhập
    12 2011
    Bài viết
    33

    Trích dẫn Nguyên bản được gửi bởi linhlonet Xem bài viết
    thì vận dụng tính đa hình trong OOP thôi. Kiến thức căn bản mà
    cụ thể hơn đi bác. nghĩa là vẫn ép kiểu về từng kiểu con à
    Nếu bắt buộc phải dùng cách ép kiểu vậy có cách nào bỏ qua bước kiểm tra phần tử đó thuộc kiểu class nào trước khi ép về không
    ép thẳng về kiểu cha rồi gọi thuongTet() ?

    hay có cách gì khác để thực hiện những công việc em mong muốn bên trên không. sử dụng interface đc ko ạ. em chưa biết cách dùng interface

  3. #3
    Ngày gia nhập
    05 2012
    Bài viết
    62

    Trong bước khởi tạo đó..cha có thể new con...rồi sử dụng thoải mái!

  4. #4
    Ngày gia nhập
    07 2010
    Bài viết
    99

    bạn chỉ cần ép về kiểu People là xong. hoặc sử dụng List (ko cần phải ép kiểu)

    Visual C# Code:
    1. class People
    2. {
    3.     public virtual void ThuongTet() { }
    4. }
    5.  
    6. class NhanVien : People
    7. {
    8.     public override void ThuongTet()
    9.     {
    10.         // Code here
    11.     }
    12. }
    13.  
    14. class KeToan : People
    15. {
    16.     public override void ThuongTet()
    17.     {
    18.         // Code here
    19.     }
    20. }
    21.  
    22. // Cách 1 : array list
    23. ArrayList list = new ArrayList();
    24. list.Add(new NhanVien());
    25. list.Add(new KeToan());
    26.  
    27. foreach(object obj in list)
    28.     ((People)obj).ThuongTet();
    29.  
    30.  
    31. // Cách 2 : generic
    32. List<People> list = new List<People>();
    33. list.Add(new NhanVien());
    34. list.Add(new KeToan());
    35.  
    36. foreach (People p in list)
    37.     p.ThuongTet();

    mình code vội bằng notepad. nếu sai keyword thì tự chỉnh lại nha.
    Never try, never know

Các đề tài tương tự

  1. Trả lời: 73
    Bài viết cuối: 25-03-2018, 11:45 PM
  2. Cách sửa lỗi Object reference not set to an instance of an object trong Xml
    Gửi bởi thangemhamhochoi trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 27-11-2012, 09:58 AM
  3. lỗi Object reference not set to an instance of an object. khi submit form dùng Html.DropDownList
    Gửi bởi tuanngocpt trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 0
    Bài viết cuối: 03-05-2012, 04:02 AM
  4. Lỗi "Object reference not set to an instance of an object" khi update list view?
    Gửi bởi longcoolie trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 27-04-2011, 11:58 AM
  5. Socket Lỗi Object reference not set to an instance of an object. Lấy email sử dụng POP3 trong C#
    Gửi bởi kamikaze129 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 26-04-2011, 10:56 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn