NHỮNG KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG pdf

26 872 0
NHỮNG KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

NHỮNG KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Khái niệm: Lập trình hướng đối tượng gọi tắt là OOP (Object-Oriented Programming) là kĩ thuật hỗ trợ công nghệ đối tượng. OOP được xem là ngôn ngữ lập trình giúp tăng năng suất lập trình, giúp đơn giản hóa việc lập trình và mở rộng chức năng lập trình, giúp dễ dàng bảo trì và mở rộng các chức năng phần mềm bằng các cho phép lập trình viên có thể tương tác với các đối tượng phần mêm ở mức cao hơn. Phương pháp lập trình hướng đối tượng còn được xem là dễ tiếp thu hơn là những phương pháp trước đó. (Một sự hiểu đơn giản là đây là phương pháp giúp giảm nhẹ cho việc lập trình, giúp cho người lập trình tạo ra những đối tượng mà cho phép các đội tượng bên ngoài tương tác lên nó như tương tác tới một đối tượng vật lý.) (Trên là cái hiểu nôm na của mình về hướng đối tượng. Cái đặc biệt của hướng đối tượng là các tính chất của nó, khi hiểu rõ các tính chất của hướng đối tượng sẽ giúp bạn bước vào sử dụng nó linh động hơn.) MỘT SỐ KHÁI NIỆM VỀ HƯỚNG ĐỐI TƯỢNG • Cú pháp thừa kế trong C#, các chức năng ảo, và các tính năng liên quan. • Những phương thức nạp chồng: C# cho phép bạn định nghĩa những dạng khác nhau của một phương thức trong một lớp. Trình biên dịch sẽ tự động chọn phương thức nào thích hợp nhất dựa vào tham số truyền vào của nó. • Construction và Destruction: Nó chỉ rõ cách mà một đối tượng khởi tạo sẽ có một số hành động tự động kèm theo và tự động giải phóng khi kết thúc. • Struct: là những kiểu giá trị mà cung cấp những tiện nghi khi bạn cần một số tính năng của một lớp mà không cần phải vất vả tạo ra một thực thể lớp cho phức tạp. • Nạp chồng toán hạng : sẽ kiểm tra cách để định nghĩa những toán hạng cho lớp của bạn. • Indexers: Cho phép một lớp được xử lý chỉ mục khi nó là một mảng và có thể đơn giản hoá cách sử dụng những lớp chứa các tập đối tượng. • Giao diện : C# hỗ trợ thừa kế giao diện tốt như thừa kế thực thi, bạn sẽ được biết rõ hơn ở phần sau. LớpvàThừakế -Tất cả các lớp trong C# là những kiểu tham khảo. Tức là khi bạn khai báo một kiểu lớp thì có một biến lưu trữ sự tham khảo đến một thể hiện (instance) của lớp đó. Và sử dụng lệnh new để tạo ra một đối tượng. Ví dụ tạo ra đối tượng myObject như sau: • MyClass myObject; • myObject = new MyClass(); //Tuy nhiên bạn có thể khai báo và khởi tạo đối tượng cùng một lúc. • MyClass myObject = new MyClass(); -Các lớp bao gồm nhiều thành viên, mỗi thành viên là thuật ngữ(term) dùng để chỉ đến một dữ liệu hay một chức năng nào đó được định nghĩa trong lớp đó. Ví dụ chúng ta dùng thuật ngữ Function để chỉ những thành viên chứa mã như các phương thức(methods), các thuộc tính(properties), constructor, hay các nạp chồng toán hạng(Operator Overloads). Đơnthừakế • C# hỗ trợ đơn thừa kế giữa các lớp. Một lớp có thể thừa hưởng những thuộc tính và phương thức từ một lớp khác. Cú pháp: class MyDerivedClass : MyBaseClass { // chức năng và dữ liệu thành viên ở đây } • Cú pháp này khác với C++ về phạm vi, không có bổ từ truy cập(access modifier). Tức là C# không hỗ trợ như C++ về các khái niệm thừa kế public hay private vì nó làm ngôn ngữ thêm phức tạp. (thừa kế private rất ít được sử dụng). Trong C# một lớp bắt buột phải thừa kế từ một lớp nào đó. C# hỗ trợ một lớp cơ sở toàn diện gọi là System.Object. Phươngthứcnạp chồng(Overloading) • C# hỗ trợ phương thức nạp chồng với một vài dạng phương thức khác nhau về những đặc tính sau: tên, số lượng thông số, và kiểu thông số. Nhưng nó không hỗ trợ những thông số mặc định như C++ và VB. Một cách đơn giản là bạn khai báo những phương thức cùng tên nhưng khác số lượng và kiểu của thông số: class ResultDisplayer { void DisplayResult(string result) { // thực hiện } void DisplayResult(int result) { // thực hiện } } Phươngthứcnạp chồng(Overloading) • Bởi vì C# không hỗ trợ những thông số tuỳ chọn nên bạn cần sử dụng những phương thức nạp chồng để đạt được cùng một hiệu quả: class MyClass { int DoSomething(int x) // want 2nd parameter with default value 10 { DoSomething(x, 10); } int DoSomething(int x, int y) { // implementation } } • Trong C# có một vài điểm khác nhỏ về thông số trong các phương thức nạp chồng cần biết như sau: -Nó không chấp nhận hai phương thức chỉ khác nhau về kiểu trả về. -Nó không chấp nhận hai phương thức chỉ khác nhau về đặc tính của một thông số đang được khai báo như ref hay out. PhươngthứcOverridenvàHide: -Bằng cách khai báo virtual trong một hàm ở lớp cơ sở thì cho phép hàm đó được overriden trong bất kỳ một lớp thừa hưởng nào. class MyBaseClass { public virtual string VirtualMethod() { turn " Phương pháp này là ảo và quy định tại MyBaseClass "; } } -Như ví dụ trên, tức là ta có thể tạo ra một sự thực thi khác của VirtualMethod() trong một lớp thừa hưởng của MyBaseClass. Và khi gọi phương thức trong một thể hiện của lớp thừa hưởng thì phương thức của lớp thừa hưởng sẽ được thi hành mà không quan tâm đến phương thức đó ở lớp cơ sở. Khác với C++ và Java, trong C# những hàm không được khai báo virtual mặc định mà bạn phải khai báo virtual một cách rõ ràng và khi một hàm muốn override một hàm khác thì phải sử dụng từ khoá override: class MyDerivedClass : MyBaseClass { public override string VirtualMethod() { return " Phương pháp này là ảo và quy định tại MyBaseClass "; } } Những trường thành viên(member fields) và những hàm tĩnh thì không được khai báo Virtual PhươngthứcOverridenvàHide • Nếu một phương thức có cùng đặc tính trong cả hai khai báo ở lớp cơ sở và lớp thừa hưởng nhưng các phương thức này thì không khai báo virtual hay overriden thì sẽ được gọi là: "lớp thừa hưởng hide lớp cơ sở đó". Kết quả là: phương thức nào được gọi phụ thuộc vào kiểu của biến được sử dụng để tham khảo đến thể hiện, chứ không phải kiểu của chính thể hiện đó. • Nếu bạn tạo ra hai phương thức hoàn toàn giống nhau ở cả lớp thừa hưởng và lớp cơ sở mà không có khai báo virtual và override thì bạn sẽ bị cảnh báo trong khi biên dịch. Trong C#, bạn nên sử dụng từ khoá new để đảm bảo bạn muốn hide phương thức đó Gọicácphiênbảncơsởcủacácchức năng(baseVersionsofFunctions) Trong C# có một cú pháp đặc biệt để gọi những phiên bản cơ sở của một phương thức từ một lớp thừa hưởng. Cú pháp : base.<methodname>(). Ví dụ: class CustomerAccount { public virtual decimal CalculatePrice() { // thực hiện } } class GoldAccount : CustomerAccount { public override decimal CalculatePrice() { return base.CalculatePrice() * 0.9M; } CáclớpvàhàmAbstract: -C# cho phép cả lớp và phương thức có thể khai báo abstract. Một lớp abstract không được thể hiện và một phương thức abstract không được thực thi mà phải được overriden trong bất kỳ lớp thừa hưởng không abstract nào. Một phương thức abstract sẽ tự động được khai báo virtual. Nếu một lớp có phương thức abstract thì nó cũng là lớp abstract và được khai báo như sau: abstract class Building { public abstract decimal CalculateHeatingCost(); // phương pháp trừu tượng } [...]... nó Nếu một đối tượng thực thi một Destructor, thì nó đặt một đặc tính quan trọng vào quá trình thu gom rác của đối tượng đó Nó sẽ trì hoãn việc di chuyển cuối cùng của đối tượng từ bộ nhớ Những đối tượng không có một Destructor thì bị xoá khỏi bộ nhớ trong một lần hoạt động của bộ thu gom rác Còn đối tượng có Destructor thì nó sẽ qua hai bước : lần đầu nó gọi Destructor mà không xoá đối tượng, lần... vì các đối tượng trong NET và C# thì bị xoá bởi bộ thu gom rác (garbage collection) Trong C#, mẫu destruction làm việc theo hai giai đoạn: 1.Lớp sẽ thực thi giao diện System.IDisposable, tức là thực thi phương thức IDisposable.Dispose() Phương thức này được gọi tường minh khi trong đoạn mã khi một đối tượng không cần nữa 2 Một Destructor có thể được định nghĩa và nó được tự động gọi khi đối tượng bị... -Một số trường hợp chúng ta nên viết các toán hạng nạp chồng: 1 Trong thế giới toán học, mọi đối tượng toán học như: tọa độ, vector, ma trận, hàm số và vân vân Nếu bạn viết chương trình làm những mô hình toán học hay vật lý, bạn nhất định sẽ mô tả những đối tượng này 2.Những chương trình đồ hoạ sẽ sử dụng các đối tượng toán học và toạ độ khi tính toán vị trí của trên màn hình 3 Một lớp mô tả số lượng tiền... chương trình khác ̣ Tóm tắt  Chúng ta đã kiểm tra một số tính năng của C# để viết mã và các lớp dễ dàng hơn, cho phép chúng có nhiều cú pháp trực quan hơn Chúng ta thấy được cách mà C# quản lý bộ nhớ của nó Nó sẽ rất có lợi khi bạn viết các chương trình lớn Chúng ta kiểm tra cách mà các construcotr và Destructor khởi tạo cho các đối tượng, cách chúng hoạt động và bị xoá tài nguyên khi đối tượng bị... Thực thi phương thức Dispose() và một Destructor -Destrutor được gọi khi một đối tượng bị hủy Có một vài điểm ta phải nhớ như sau: 1 Chúng ta không thể biết trước khi nào một thể hiện bị huỹ, tức là ta không biết trước khi nào một Destructor được gọi 2 Bạn có thể tác động đến bộ thu gom rác để chạy tại một thời điểm trong đoạn mã của bạn bằng cách gọi phương thức System.GC.Collect() System.GC là một lớp cơ sở NET mô tả bộ thu gom rác và phương... có Destructor thì nó sẽ qua hai bước : lần đầu nó gọi Destructor mà không xoá đối tượng, lần thứ hai mới thực sự xoá đối tượng -Chú ý : Không có bất kỳ một tham số nào trong một Destructor, không kiểu trả về và không có bổ từ Không cần thiết phải gọi tường minh một Destructor của lớp cơ sở mà trình biên dịch sẽ tự động sắp xếp tất cả Destructor được định nghĩa trong các lớp thừa kế đều được gọi Các trường chỉ đọc( Readonly fields)... virtual, overriden hay abstract bạn chỉ cần thêm từ khoá đó trong lúc định nghĩa thuộc tính Ví dụ để tạo một thuộc tính abstract thì cú pháp như sau: public abstract string ForeName { get; set; } Lớp đối tượng Giao diện(Interfaces)  - C# hỗ trợ giao diện (Interfaces) Khi thừa kế một giao diện, một lớp đang khai báo sẽ thực thi những hàm nào đó Chúng ta sẽ minh họa về giao diện thông qua việc giới thiệu... Dimensions { public double Length; public double Width; } 1.Struct là một kiểu giá trị, không phải là kiểu tham khảo 2 Struct không hổ trợ thừa kế 3 Có vài sự khác nhau trong cách làm việc của các constructor đối với struct Trình biên dịch luôn luôn cung cấp một constructor không tham số mặc định, và không được cho phép thay thế 4 Với một struct, bạn có thể chỉ rỏ cách mà các trường được đặt ngoài bộ nhớ - . NHỮNG KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Khái niệm: Lập trình hướng đối tượng gọi tắt là OOP (Object-Oriented Programming) là kĩ thuật hỗ trợ công nghệ đối tượng. . những đối tượng mà cho phép các đội tượng bên ngoài tương tác lên nó như tương tác tới một đối tượng vật lý.) (Trên là cái hiểu nôm na của mình về hướng đối tượng. Cái đặc biệt của hướng đối tượng. một đối tượng thực thi một Destructor, thì nó đặt một đặc tính quan trọng vào quá trình thu gom rác của đối tượng đó. Nó sẽ trì hoãn việc di chuyển cuối cùng của đối tượng từ bộ nhớ. Những đối

Ngày đăng: 07/07/2014, 07:20

Từ khóa liên quan

Mục lục

  • NHỮNG KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

  • MỘT SỐ KHÁI NIỆM VỀ HƯỚNG ĐỐI TƯỢNG

  • Lớp và Thừa kế

  • Đơn thừa kế

  • Phương thức nạp chồng(Overloading)

  • Slide 6

  • Phương thức Overriden và Hide:

  • Phương thức Overriden và Hide

  • Gọi các phiên bản cơ sở của các chức năng(base Versions of Functions)

  • Các lớp và hàm Abstract :

  • Sealed các lớp và phương thức:

  • Thuộc tính(properties)

  • Bổ từ truy cập:

  • Thuộc tính Virtual và Abstract

  • Lớp đối tượng

  • Giao diện(Interfaces)

  • Constructor

  • Constructor tĩnh(static)

  • Destructors và phương thức Dispose()

  • Thực thi phương thức Dispose() và một Destructor

  • Các trường chỉ đọc( Readonly fields)

  • Struct

  • Nạp chồng toán hạng

  • ĐA HÌNH

  • ĐÓNG GÓI

  • Tóm tắt

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan