C# và các lớp cơ sở Nhóm các đối tượng – Phần 1
Số trang: 12
Loại file: pdf
Dung lượng: 113.50 KB
Lượt xem: 19
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chúng ta đã khảo sát 1 số lớp cơ sở của .NET có cấu trúc dữ liệu trong đó một số đối tượng được nhóm với nhau.cấu trúc đơn giản mà ta đã học là mảng, đây là 1 thể hiện của lớp System.Array . mảng có lợi điểm là ta có thể truy nhập từng phần tử thông qua chỉ mục.tuy nhiên khuyết điểm của nó là ta phải khởi tạo kích thước của nó. không thể thêm ,chèn hoặc bỏ 1 phần tử sau đó.và phải có một chỉ mục số để truy nhập vào 1 phần...
Nội dung trích xuất từ tài liệu:
C# và các lớp cơ sở Nhóm các đối tượng – Phần 1 C# và các lớp cơ sở Nhóm các đối tượng – Phần 1Chúng ta đã khảo sát 1 số lớp cơ sở của .NET có cấu trúc dữ liệu trong đómột số đối tượng được nhóm với nhau.cấu trúc đơn giản mà ta đã học làmảng, đây là 1 thể hiện của lớp System.Array . mảng có lợi điểm là ta có thểtruy nhập từng phần tử thông qua chỉ mục.tuy nhiên khuyết điểm của nó là taphải khởi tạo kích thước của nó. không thể thêm ,chèn hoặc bỏ 1 phần tử sauđó.và phải có một chỉ mục số để truy nhập vào 1 phần tử.điều này khôngtiện lắm ví dụ như khi ta làm việc với 1 bản ghi nhân viên và muốn tìm bảnghi theo tên nhân viên..NET có một số cấu trúc dữ liệu khác hổ trợ cho công việc này.ngoài ra còncó 1 số inteface , mà các lớp có thể khai báo chúng hổ trợ tất cả chức năngcủa một kiểu cụ thể cấu trúc dữ liệu. chúng ta sẽ xem xét 3 cấu trúc sau : - Array lists - Collection - Dictionary ( hay maps)Các lớp cấu trúc dữ liệu này nằm trong namespace System.CollectionArray listsArray list giống như mảng, ngoại trừ nó có khả năng phát triển.được đại diệnbởi lớp System.Collection.Arraylistlớp Arraylist cũng có một một vài điểm tương tự với lớp StringBuilder mà tatìm hiểu trưóc đây.như StringBuilder cấp phát đủ chỗ trống trong vùng nhớđể lưu trữ 1 số kí tự, và cho phép ta thao tác các kí tự trong chỗ trống đó ,the Arraylist cấp đủ vùng nhớ để lưu trữ 1 số các tham chiếu đối tượng. ta cóthể thao tác trên những tham chiếu đối tượng này.nếu ta thử thêm một đốitượng đến Arraylist hơn dung lượng cho phép của nó, thì nó sẽ tự động tăngdung lượng bằng cách cấp phát thêm vùng nhớ mới lớn đủ để giữ gấp 2 lầnsố phần tử của dung lượng hiện thời.Ta có thể khởi tạo 1 danh sách bằng cách chỉ định dung lượng ta muốn .vídụ , ta tạo ra một danh sách Vectors:ArrayList vectors = new ArrayList(20);Nếu ta không chỉ định kích cỡ ban đầu , mặc định sẽ là 16:ArrayList vectors = new ArrayList(); // kích cỡ là 16Ta có thể thêm phần tử bằng cách dùng phương thức Add():vectors.Add(new Vector(2,2,2));vectors.Add(new Vector(3,5,6));Arraylist xem tất cả các phần tử của nó như là các tham chiếu đốitượng..nghĩa là ta có thể lưu trữ bất kì đối tượng nào mà ta muốn trong 1Arraylist. nhưng khi truy nhập đến đối tượng, ta sẽ cần ép kiểu chúng trở lạikiểu dữ liệu tương đương:Vector element1 = (Vector)vectors[1];Ví dụ này cũng chỉ ra Arraylist định nghĩa 1 indexer, để ta có thể truy nhậpnhững phần tử của nó với cấu trúc như mảng. ta cũng có thể chèn các phầntử vào array list:vectors.Insert(1, new Vector(3,2,2)); // chèn vào vị trí 1Đây là phương thức nạp chồng có ích khi ta muốn chèn tất cả các phần tửtrong 1 collection vào arraylistta có thể bỏ 1 phần tử :vectors.RemoveAt(1); // bỏ đối tượng ở vị trí 1Ta cũng có thể cung cấp 1 đối tượng tham chiếu đến 1 phương thức khác,Remove().nhưng làm điều này sẽ mất nhiều thời gian hơn vì arraylist phảiquét qua toàn bộ mảng để tìm đối tượngLưu ý rằng việc thêm và bỏ 1 phần tử sẽ làm cho tất cả các phần tử theo sauphải bị thay đổi tương ứng trong bộ nhớ, thậm chí nếu cần thì có thể tái địnhvị toàn bộ ArraylistTa có thể cập nhật hoặc đọc dung lượng qua thuộc tính :vectors.Capacity = 30;Tuy nhiên việc thay đổi dung lương đó sẽ làm cho toàn bộ Arraylist được táiđịnh vị đến một khối bộ nhớ mới với dung lượng đưọc yêu cầu.Để biết số phần tử thực sự trong arraylist ta dùng thuộc tính Count :int nVectors = vectors.Count;1 arraylist có thể thực sự hữu ích nếu ta cần xây dựng 1 mảng đối tuợng màta không biết kích cỡ của mảng sẽ là bao nhiêu. trong trường hợp đó, ta cóthể xây dựng mảng trong Arraylist, sau đó sao chép Arraylist trở lại mảngkhi ta hoàn thành xong nếu ta thực sự cần dữ liệu như là 1 mảng ( ví dụ nếumảng được truyền đến 1 phương thức xem mảng là 1 thông số). mối quan hệgiữa Arraylist và Array theo 1 cách nào đó giống như mối quan hệ giữaStringBUilder và Stringkhông như lớp StringBuilder, không có phương thức đơn nào để làm việcchuyển đổi từ 1 arraylist sang array .ta phải dùng 1 vòng lặp để sao chép thủcông trở lại.tuy nhiên ta chỉ phải sao chép tham chiếu chứ không phải đốitượng:// vectors is an ArrayList instance being used to store Vector instancesVector [] vectorsArray = new Vector[vectors.Count];for (int i=0 ; i< vectors.Count ; i++)vectorsArray[i] = (Vector)vectors [i];CollectionsÝ tưởng của Collection là nó trình bày một tập các đối tượng mà ta có thểtruy xuất bằng việc bước qua từng phần tử. cụ thể là 1 tập đối tượng mà ta cóthể truy nhập sử dụng vòng lặp foreach. nói cách khác ,khi viết 1 thứ gì đónhư :foreach (string nextMessage in messageSet){DoSomething(nextMessage);}Ta xem biến messageSet là 1 collection . khả năng để dùng vòng lặp foreachlà mục đích chính của collection.tiếp theo ta tìm hiểu chi tiết collection là gì và thi hành 1 collectio ...
Nội dung trích xuất từ tài liệu:
C# và các lớp cơ sở Nhóm các đối tượng – Phần 1 C# và các lớp cơ sở Nhóm các đối tượng – Phần 1Chúng ta đã khảo sát 1 số lớp cơ sở của .NET có cấu trúc dữ liệu trong đómột số đối tượng được nhóm với nhau.cấu trúc đơn giản mà ta đã học làmảng, đây là 1 thể hiện của lớp System.Array . mảng có lợi điểm là ta có thểtruy nhập từng phần tử thông qua chỉ mục.tuy nhiên khuyết điểm của nó là taphải khởi tạo kích thước của nó. không thể thêm ,chèn hoặc bỏ 1 phần tử sauđó.và phải có một chỉ mục số để truy nhập vào 1 phần tử.điều này khôngtiện lắm ví dụ như khi ta làm việc với 1 bản ghi nhân viên và muốn tìm bảnghi theo tên nhân viên..NET có một số cấu trúc dữ liệu khác hổ trợ cho công việc này.ngoài ra còncó 1 số inteface , mà các lớp có thể khai báo chúng hổ trợ tất cả chức năngcủa một kiểu cụ thể cấu trúc dữ liệu. chúng ta sẽ xem xét 3 cấu trúc sau : - Array lists - Collection - Dictionary ( hay maps)Các lớp cấu trúc dữ liệu này nằm trong namespace System.CollectionArray listsArray list giống như mảng, ngoại trừ nó có khả năng phát triển.được đại diệnbởi lớp System.Collection.Arraylistlớp Arraylist cũng có một một vài điểm tương tự với lớp StringBuilder mà tatìm hiểu trưóc đây.như StringBuilder cấp phát đủ chỗ trống trong vùng nhớđể lưu trữ 1 số kí tự, và cho phép ta thao tác các kí tự trong chỗ trống đó ,the Arraylist cấp đủ vùng nhớ để lưu trữ 1 số các tham chiếu đối tượng. ta cóthể thao tác trên những tham chiếu đối tượng này.nếu ta thử thêm một đốitượng đến Arraylist hơn dung lượng cho phép của nó, thì nó sẽ tự động tăngdung lượng bằng cách cấp phát thêm vùng nhớ mới lớn đủ để giữ gấp 2 lầnsố phần tử của dung lượng hiện thời.Ta có thể khởi tạo 1 danh sách bằng cách chỉ định dung lượng ta muốn .vídụ , ta tạo ra một danh sách Vectors:ArrayList vectors = new ArrayList(20);Nếu ta không chỉ định kích cỡ ban đầu , mặc định sẽ là 16:ArrayList vectors = new ArrayList(); // kích cỡ là 16Ta có thể thêm phần tử bằng cách dùng phương thức Add():vectors.Add(new Vector(2,2,2));vectors.Add(new Vector(3,5,6));Arraylist xem tất cả các phần tử của nó như là các tham chiếu đốitượng..nghĩa là ta có thể lưu trữ bất kì đối tượng nào mà ta muốn trong 1Arraylist. nhưng khi truy nhập đến đối tượng, ta sẽ cần ép kiểu chúng trở lạikiểu dữ liệu tương đương:Vector element1 = (Vector)vectors[1];Ví dụ này cũng chỉ ra Arraylist định nghĩa 1 indexer, để ta có thể truy nhậpnhững phần tử của nó với cấu trúc như mảng. ta cũng có thể chèn các phầntử vào array list:vectors.Insert(1, new Vector(3,2,2)); // chèn vào vị trí 1Đây là phương thức nạp chồng có ích khi ta muốn chèn tất cả các phần tửtrong 1 collection vào arraylistta có thể bỏ 1 phần tử :vectors.RemoveAt(1); // bỏ đối tượng ở vị trí 1Ta cũng có thể cung cấp 1 đối tượng tham chiếu đến 1 phương thức khác,Remove().nhưng làm điều này sẽ mất nhiều thời gian hơn vì arraylist phảiquét qua toàn bộ mảng để tìm đối tượngLưu ý rằng việc thêm và bỏ 1 phần tử sẽ làm cho tất cả các phần tử theo sauphải bị thay đổi tương ứng trong bộ nhớ, thậm chí nếu cần thì có thể tái địnhvị toàn bộ ArraylistTa có thể cập nhật hoặc đọc dung lượng qua thuộc tính :vectors.Capacity = 30;Tuy nhiên việc thay đổi dung lương đó sẽ làm cho toàn bộ Arraylist được táiđịnh vị đến một khối bộ nhớ mới với dung lượng đưọc yêu cầu.Để biết số phần tử thực sự trong arraylist ta dùng thuộc tính Count :int nVectors = vectors.Count;1 arraylist có thể thực sự hữu ích nếu ta cần xây dựng 1 mảng đối tuợng màta không biết kích cỡ của mảng sẽ là bao nhiêu. trong trường hợp đó, ta cóthể xây dựng mảng trong Arraylist, sau đó sao chép Arraylist trở lại mảngkhi ta hoàn thành xong nếu ta thực sự cần dữ liệu như là 1 mảng ( ví dụ nếumảng được truyền đến 1 phương thức xem mảng là 1 thông số). mối quan hệgiữa Arraylist và Array theo 1 cách nào đó giống như mối quan hệ giữaStringBUilder và Stringkhông như lớp StringBuilder, không có phương thức đơn nào để làm việcchuyển đổi từ 1 arraylist sang array .ta phải dùng 1 vòng lặp để sao chép thủcông trở lại.tuy nhiên ta chỉ phải sao chép tham chiếu chứ không phải đốitượng:// vectors is an ArrayList instance being used to store Vector instancesVector [] vectorsArray = new Vector[vectors.Count];for (int i=0 ; i< vectors.Count ; i++)vectorsArray[i] = (Vector)vectors [i];CollectionsÝ tưởng của Collection là nó trình bày một tập các đối tượng mà ta có thểtruy xuất bằng việc bước qua từng phần tử. cụ thể là 1 tập đối tượng mà ta cóthể truy nhập sử dụng vòng lặp foreach. nói cách khác ,khi viết 1 thứ gì đónhư :foreach (string nextMessage in messageSet){DoSomething(nextMessage);}Ta xem biến messageSet là 1 collection . khả năng để dùng vòng lặp foreachlà mục đích chính của collection.tiếp theo ta tìm hiểu chi tiết collection là gì và thi hành 1 collectio ...
Tìm kiếm theo từ khóa liên quan:
lập trình tài liệu lập trình kỹ thuật lập trình giáo trình C ngôn ngữ lập trình C tự học lập trình với CGợi ý tài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 260 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 202 0 0 -
101 trang 199 1 0
-
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 192 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 161 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 152 0 0 -
Tìm hiểu về ngôn ngữ lập trình C: Phần 1 - Quách Tuấn Ngọc
211 trang 149 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 129 0 0 -
161 trang 129 1 0
-
Bài giảng lập trình c căn bản - Trường Apptech - Chương 4
27 trang 117 0 0