... hướng đốitượng phương pháp thích hợp tảng phương pháp hướng đốitượng lớp, đốitượng mối quanhệ chúng Một lớp lời miêu tả cho dạng đốitượnghệ thống – hệ thống thông tin, hệ thống kỹ thuật, hệ ... lớp Một biểu đồ 4/5 Lớp , đốitượngquanhệ thành phần mô hình lớp chỉ lớp, bên cạnh có biến tấu khác chút đốitượng thật thực thể lớp (biểu đồđối tượng) -Mô hình lớp UML Một lớp cụ thể với thuộc ... khác hệ thống (ví dụ trạng thái đốitượng hay cộng tác động đối tượng, biểu đồ động) Một lớp biểu đồlớp thực thi trực tiếp ngôn ngữ hướng đốitượng có hỗ trợ trực tiếp khái niệm lớp Một biểu đồ...
... Loc1 location: 200, 30 00 In myFunc loc: 50, 10 0 Loc1 location: 50, 10 0 Lúc Location đốitượng tham chiếu nên truyền vào phương thức myFunc() việc gán giá trị cho x y điều làm thay đổiđốitượng ... truyền đốitượng cho phương thức WriteLine(): loc1.xVal = 10 0; Cấu Trúc 17 1 Ngôn Ngữ Lập Trình C# loc2.yVal = 250; Nếu thử bỏ lệnh gán biên dịch lại: static void Main() { Location loc1; loc1.xVal ... static void Main() { Location loc1; // gán cho biến thành viên loc1.xVal = 10 0; loc1.yVal = 250; // sử dụng thuộc tính loc1.x = 30 0; loc1.y = 400; Console.WriteLine( loc1 ); } Hãy cẩn thận với việc...
... loc.x = 50; loc.y = 10 0; Console.WriteLine(“Loc1 location: {0}”, loc); } static void Main() { Location loc1 = new Location( 200, 30 0); Console.WriteLine(“Loc1 location: {0}”, loc1); Tester t = new ... giống kiểu lớp Một điều quan trọng lớp kiểu liệu tham chiếu, cấu trúc kiểu lịêu giá trị (Chương thảo luận kiểu liệu tham chiếu kiểu liệu giá trị) Do cấu trúc thường dùng để thể hiển đốitượng không ... t.myFunc( loc1 ); Console.WriteLine(“Loc1 location: {0}”, loc1); } } Không giống lớp, cấu trúc không hỗ trợ việc thừa kế Chúng thừa kế ngầm định từ lớp object...
... phân số đưa vào: Fraction f3 = f1 + f2; Console.WriteLine(“f1 + f2 = f3: {0}”, f3.ToString()); Hai câu lệnh cho kết sau: In operator + In Fraction Constructor( int, int) f1 + f2 = f3: 5/4 Toán ... số 3/ 4 6/8 không so sánh Một lần nữa, thực thi tốt tối giản tử số mẫu số 6/8 đơn giản thành 3/ 4 so sánh hai phân số Trong lớp thực thi phủ phương thức Equals() lớp object, đốitượng Fraction đối ... chuỗi thể giá trị mẫu số Với lớp Fraction tạo ra, thực kiểm tra lớp Đầu tiên tạo hai phân số 3/ 4, 2/4: Fraction f1 = new Fraction( 3, 4); Console.WriteLine("f1:{0}",f1.ToString()); Fraction f2...
... chức cộng hai đốitượng Nạp chồng toán tử cú pháp ngắn gọn, không đường dẫn cho đốitượng thiết lập nhiệm vụ đưa Sử dụng toán tử Nạp chồng toán tử làm cho mã nguồn trực quan hành động lớp mà xây ... Fraction.operator+(firstFraction, secondFraction) Kết sau thực đốitượng Fraction trả về, trường hợp phép gán thực để gán đốitượng Fraction cho theSum Ghi chú: Đối với người lập trình C++, ngôn ngữ C# tạo toán ... Equals() Lớp object thực thi phương thức Equals() với khai báo sau: public override bool Equals( object ) Bằng cách phủ phương thức này, cho phép lớp Fraction hành động cách đa hình với tất lớp khác...
... để tạo mảng đốitượng Xe, đưa đốitượng cụ thể vào mảng đốitượng Xe, sau cho lặp đốitượng mảng để tự giới thiệu tên (bằng cách gọi hàm Who() đối tượng) Bài tập 3: Xây dựng lớpđốitượng hình ... phải thực lớp dẫn xuất từ lớp trừu tượngDolớp trừu tượng, thực thi nên tạo thể hay tạo đốitượng cho lớp trừu tượng Câu hỏi 3: Có phải tạo lớp phải kế thừa từ lớp không? Trả lời 3: Không thiết ... tập 1: Hãy mở rộng ví dụ chương xây dựng thêm đốitượng khác kế thừa lớp Window như: Label, TextBox, Scrollbar, toolbar, menu, Bài tập 2: Hãy xây dựng lớpđốitượng câu hỏi 3, thiết lập quan hệ...
... Phải chắn đốitượng boxing kiểu giá trị đưa Sao chép giá trị từ thể hay đốitượng vào biến kịểu giá trị Heap Stack i 1 23 int i = 1 23; i o 1 23 boxed Int 1 23 object o=i; k 1 23 int k = (int)o; ... Stack Heap i 1 23 int i = 1 23; i boxed o 1 23 object o=i; Int 1 23 Hình 5.5: Boxing số nguyên Boxing thực ngầm định đặt kiểu giá trị vào tham chiếu chờ đợi giá trị đưa vào đốitượng cách tự động ... lúc này, lớp tạo để dùng cho lớp bên ngoài, chức lớplớp trợ giúp (helper class) Chúng ta định nghĩa lớp trợ giúp bên lớp (outer class) Cáclớp định nghĩa bên gọi lớp lồng (nested class), lớp chứa...
... trừu tượnglớp Window, dẫn xuất từ lớp này, ta tạo đốitượng cho lớp Khi lớp dẫn xuất phải thực thi phương thức DrawWindow() Nếu lớp dẫn xuất không thực thi phương thức trừu tượnglớpsởlớp dẫn ... thể lớp ListBox Button, hai lớp phủ phương thức trừu tượng Hay nói hai lớp xác định (ngược với lớp trừu tượng) Hạn chế lớp trừu tượng Mặc dù thiết kế phương thức DrawWindow() lớp trừu tượng ... chia xẻ lớp dẫn xuất Cuối lớp trừu tượng thực thi bản; chúng thể ý tưởng trừu tượng, điều thiết lập giao ước cho tất lớp dẫn xuất Nói cách khác 14 1 Kế Thừa – Đa Hình Ngôn Ngữ Lập Trình C# lớp trừu...
... thường ta muốn tạo mảng đốitượng Window, ListBox Window nên ta tự đặt đốitượng ListBox vào vị trí đốitượng Window mảng Vàtương tự ta đặt đốitượng Button vào vị trí mảng đốitượng Window, Button ... đối tượng, đốitượng thứ Window, đốitượng thứ hai lớp ListBox đốitượng cuối lớp Button Sau ta thực việc gọi phương thức DrawWindow() cho đốitượng sau: Window win = new Window( 1, ); ListBox ... dịch lớp thực việc phủ lại phương thức DrawWindow() lớpsởTương tự ta thực việc phủ phương thức lớp dẫn xuất khác Button, lớp dẫn xuất từ Window Trong phần thân ví dụ 5.2, ta tạo ba đối tượng, đối...
... kế hay cách tốt để tổ chức đối tượng, khởi điểm để hiểu cách quanhệđốitượng với đốitượng khác Sự kế thừa Trong ngôn ngữ C#, quanhệ đặc biệt hóa thực thi cách sử dụng kế thừa Đây cách để ... đốitượng cho lớpsở Window w = new Window(5, 10 ); w.DrawWindow(); // tạo đốitượng cho lớp dẫn xuất ListBox lb = new ListBox( 20, 10 , “Hello world!”); lb.DrawWindow(); } Kế Thừa – Đa Hình 13 0 ... private nên sử dụng bên lớp Window, lớp dẫn xuất không truy cập ta bàn tiếp ví dụ phần Gọi phương thức khởi dựng lớpsở Trong ví dụ 5 .1, lớp tên ListBox dẫn xuất từ lớpsở Window, lớp ListBox có phương...
... Cáclớp lồng Câu hỏi & tập Trong chương trước trình bày cách tạo kiểu liệu việc xây dựng lớpđốitượng Tiếp theo chương đưa sâu vào mối quanhệđốitượng giới thực cách mô hình hóa quanhệ ... biệt hóa tổng quát hóa Lớp thể lớp tức đốitượng không tồn khối, chúng tồn mạng lưới phụ thuộc quanhệ lẫn Ví dụ người xã hội động vật sống giới có quanhệ loài với Quanhệ (is-a) đặc biệt hóa ... liên hệ với xử lý theo cách tổng quát Cuối phần trình bày lớp cô lập (sealed class) không đặt biệt hóa, hay lớp trừu tượng sử dụng đặc biệt hóa Lớpđốitượng Object gốc tất lớp thảo luận phần cuối...
... Loc1 location: 200, 30 00 In myFunc loc: 50, 10 0 Loc1 location: 50, 10 0 Lúc Location đốitượng tham chiếu nên truyền vào phương thức myFunc() việc gán giá trị cho x y điều làm thay đổiđốitượng ... truyền đốitượng cho phương thức WriteLine(): loc1.xVal = 10 0; 17 1 Cấu Trúc Ngôn Ngữ Lập Trình C# loc2.yVal = 250; Nếu thử bỏ lệnh gán biên dịch lại: static void Main() { Location loc1; loc1.xVal ... static void Main() { Location loc1; // gán cho biến thành viên loc1.xVal = 10 0; loc1.yVal = 250; // sử dụng thuộc tính loc1.x = 30 0; loc1.y = 400; Console.WriteLine( loc1 ); } Hãy cẩn thận với việc...
... loc.x = 50; loc.y = 10 0; Console.WriteLine(“Loc1 location: {0}”, loc); } static void Main() { Location loc1 = new Location( 200, 30 0); Console.WriteLine(“Loc1 location: {0}”, loc1); Tester t = new ... giống kiểu lớp Một điều quan trọng lớp kiểu liệu tham chiếu, cấu trúc kiểu lịêu giá trị (Chương thảo luận kiểu liệu tham chiếu kiểu liệu giá trị) Do cấu trúc thường dùng để thể hiển đốitượng không ... t.myFunc( loc1 ); Console.WriteLine(“Loc1 location: {0}”, loc1); } } Không giống lớp, cấu trúc không hỗ trợ việc thừa kế Chúng thừa kế ngầm định từ lớp object...
... phân số đưa vào: Fraction f3 = f1 + f2; Console.WriteLine(“f1 + f2 = f3: {0}”, f3.ToString()); Hai câu lệnh cho kết sau: In operator + In Fraction Constructor( int, int) f1 + f2 = f3: 5/4 Toán ... số 3/ 4 6/8 không so sánh Một lần nữa, thực thi tốt tối giản tử số mẫu số 6/8 đơn giản thành 3/ 4 so sánh hai phân số Trong lớp thực thi phủ phương thức Equals() lớp object, đốitượng Fraction đối ... chuỗi thể giá trị mẫu số Với lớp Fraction tạo ra, thực kiểm tra lớp Đầu tiên tạo hai phân số 3/ 4, 2/4: Fraction f1 = new Fraction( 3, 4); Console.WriteLine("f1:{0}",f1.ToString()); Fraction f2...
... chức cộng hai đốitượng Nạp chồng toán tử cú pháp ngắn gọn, không đường dẫn cho đốitượng thiết lập nhiệm vụ đưa Sử dụng toán tử Nạp chồng toán tử làm cho mã nguồn trực quan hành động lớp mà xây ... Fraction.operator+(firstFraction, secondFraction) Kết sau thực đốitượng Fraction trả về, trường hợp phép gán thực để gán đốitượng Fraction cho theSum Ghi chú: Đối với người lập trình C++, ngôn ngữ C# tạo toán ... Equals() Lớp object thực thi phương thức Equals() với khai báo sau: public override bool Equals( object ) Bằng cách phủ phương thức này, cho phép lớp Fraction hành động cách đa hình với tất lớp khác...
... để tạo mảng đốitượng Xe, đưa đốitượng cụ thể vào mảng đốitượng Xe, sau cho lặp đốitượng mảng để tự giới thiệu tên (bằng cách gọi hàm Who() đối tượng) Bài tập 3: Xây dựng lớpđốitượng hình ... phải thực lớp dẫn xuất từ lớp trừu tượngDolớp trừu tượng, thực thi nên tạo thể hay tạo đốitượng cho lớp trừu tượng Câu hỏi 3: Có phải tạo lớp phải kế thừa từ lớp không? Trả lời 3: Không thiết ... tập 1: Hãy mở rộng ví dụ chương xây dựng thêm đốitượng khác kế thừa lớp Window như: Label, TextBox, Scrollbar, toolbar, menu, Bài tập 2: Hãy xây dựng lớpđốitượng câu hỏi 3, thiết lập quan hệ...
... Phải chắn đốitượng boxing kiểu giá trị đưa Sao chép giá trị từ thể hay đốitượng vào biến kịểu giá trị Heap Stack i 1 23 int i = 1 23; i o 1 23 boxed Int 1 23 object o=i; k 1 23 int k = (int)o; ... Stack Heap i 1 23 int i = 1 23; i boxed o 1 23 object o=i; Int 1 23 Hình 5.5: Boxing số nguyên Boxing thực ngầm định đặt kiểu giá trị vào tham chiếu chờ đợi giá trị đưa vào đốitượng cách tự động ... lúc này, lớp tạo để dùng cho lớp bên ngoài, chức lớplớp trợ giúp (helper class) Chúng ta định nghĩa lớp trợ giúp bên lớp (outer class) Cáclớp định nghĩa bên gọi lớp lồng (nested class), lớp chứa...
... trừu tượnglớp Window, dẫn xuất từ lớp này, ta tạo đốitượng cho lớp Khi lớp dẫn xuất phải thực thi phương thức DrawWindow() Nếu lớp dẫn xuất không thực thi phương thức trừu tượnglớpsởlớp dẫn ... thể lớp ListBox Button, hai lớp phủ phương thức trừu tượng Hay nói hai lớp xác định (ngược với lớp trừu tượng) Hạn chế lớp trừu tượng Mặc dù thiết kế phương thức DrawWindow() lớp trừu tượng ... xẻ lớp dẫn xuất Cuối lớp trừu tượng thực thi bản; chúng thể ý tưởng trừu tượng, điều thiết lập giao ước cho tất lớp dẫn xuất Nói cách khác 14 1 Kế Thừa – Đa Hình Ngôn Ngữ Lập Trình C# lớp trừu tượng...
... thường ta muốn tạo mảng đốitượng Window, ListBox Window nên ta tự đặt đốitượng ListBox vào vị trí đốitượng Window mảng Vàtương tự ta đặt đốitượng Button vào vị trí mảng đốitượng Window, Button ... đối tượng, đốitượng thứ Window, đốitượng thứ hai lớp ListBox đốitượng cuối lớp Button Sau ta thực việc gọi phương thức DrawWindow() cho đốitượng sau: Window win = new Window( 1, ); ListBox ... dịch lớp thực việc phủ lại phương thức DrawWindow() lớpsởTương tự ta thực việc phủ phương thức lớp dẫn xuất khác Button, lớp dẫn xuất từ Window Trong phần thân ví dụ 5.2, ta tạo ba đối tượng, đối...