1. Trang chủ
  2. » Thể loại khác

TÀI LIỆU ĐẠI HỌC - godautre PPLT-Chuong 4

77 199 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 643 KB

Nội dung

TÀI LIỆU ĐẠI HỌC - godautre PPLT-Chuong 4 tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả...

Chương Lập trình hướng đối tượng số ngơn ngữ lập trình phổ biến Tìm hiểu phương pháp OOP vài ngôn ngữ lập trình phổ biến • C# • VB.NET • VFP 4.1 Lập trình hướng đối tượng C# Định nghĩa lớp [attributes] [access-modifiers] class identifier [:base-class [,interface(s)]] {class-body} #region Using directives using System; using System.Collections.Generic; using System.Text; #endregion namespace TimeClass { public class Time { // private variables int Year; int Month; int Date; int Hour; int Minute; int Second; //public public void DisplayCurrentTime( ) { Console.WriteLine( "stub for DisplayCurrentTime" ); } } public class Tester { static void Main( ) { Time t = new Time( ); t.DisplayCurrentTime( ); Console.Read(); } } } Kiểu Ý nghĩa public Như C++ private Như C++ protecte Được truy xuất thành phần lớp từ lớp dẫn xuất d internal Các thành phần lớp A gán internal truy xuất method lớp assembly A protecte Các thành phần lớp A gán protected internal truy xuất đến method A, method lớp dẫn d internal xuất từ A, lớp assembly A Các đối số method void MyMethod (int firstParam, Button secondParam) { // } #region Using directives using System; using System.Collections.Generic; using System.Text; #endregion namespace PassingValues { public class MyClass { public void SomeMethod( int firstParam, float secondParam ) { Console.WriteLine( "Here are the parameters received: {0}, {1}", firstParam, secondParam ); public class Tester } { } static void Main( ) { } int howManyPeople = 5; float pi = 3.14f; MyClass mc = new MyClass( ); mc.SomeMethod( howManyPeople, pi ); } } Tạo đối tượng Constructors using System; using System.Collections.Generic; using System.Text; namespace DeclaringConstructor { public class Time { // private member variables int Year; int Month; int Date; int Hour; int Minute; int Second; // public accessor methods public void DisplayCurrentTime( ) { System.Console.WriteLine( "{0}/{1}/{2} {3}:{4}:{5}", Month, Date, Year, Hour, Minute, Second ); } // constructor public Time( System.DateTime dt ) { Year = dt.Year; Month = dt.Month; Date = dt.Day; Hour = dt.Hour; Minute = dt.Minute; Second = dt.Second; } } public class Tester { static void Main( ) { System.DateTime currentTime = System.DateTime.Now; Time t = new Time( currentTime ); t.DisplayCurrentTime( ); } } } Output: 03/11/2010 16:21:40 Các kiểu sở giá trị mặc định chúng Kiểu Giá trị mặc định numeric (int, long, etc.) bool false char '\0' (null) enum reference null Khởi tạo giá trị … namespace Initializer { public class Time { // private member variables private int Year; private int Month; private int Date; private int Hour; private int Minute; private int Second = 30; // initializer // public accessor methods public void DisplayCurrentTime( ) { System.DateTime now = System.DateTime.Now; System.Console.WriteLine( "\nDebug\t: {0}/{1}/{2} {3}:{4}:{5}", now.Month, now.Day, now.Year, now.Hour, now.Minute, now.Second ); System.Console.WriteLine( "Time\t: {0}/{1}/{2} {3}:{4}:{5}", Month, Date, Year, Hour, Minute, Second ); } // constructors public Time( System.DateTime dt ) { Year = dt.Year; Month = dt.Month; Date = dt.Day; Hour = dt.Hour; Minute = dt.Minute; Second = dt.Second; //explicit assignment public class Tester { static void Main( ) { System.DateTime currentTime = System.DateTime.Now; Time t = new Time( currentTime ); t.DisplayCurrentTime( ); Time t2 = new Time( 2010, 03, 18, 11, 45 ); t2.DisplayCurrentTime( ); } public Time( int Year, int Month, int Date, int Hour, int Minute ) { this.Year = Year; this.Month = Month; this.Date = Date; this.Hour = Hour; this.Minute = Minute; } } } } } Output: Debug : 03/11/2010 7:52:54 Time : 03/11/2010 7:52:54 Debug : 03/11/2010 7:52:54 Time : 03/18/2010 11:45:30 OVERRIDING Imports System Class Human Overridable Public Sub Speak() Console.Writeline ("Speaking") End Sub End Class Class Indian Inherits Human Overrides Public Sub Speak() ‘Nói tiếng Hindi Console.Writeline ("Speaking Hindi") ‘Chú ý, để gọi Speak() lớp sở phải ‘sử dụng kiểu như: 'Mybase.Speak() End Sub End Class Class MainClass Shared Sub Main() Dim Tom as Human Tom=new Human Dim Tony as Indian Tony=new Indian Tom.Speak() Tony.Speak() End Sub End Class POLYMORPHISM Imports System Class Human 'Speak() is declared Overridable Overridable Public Sub Speak() Console.Writeline ("Speaking") End Sub End Class Class Indian Inherits Human Overrides Public Sub Speak() Console.Writeline ("Speaking Hindi") End Sub End Class Class MainClass Shared Sub Main() Dim Tom as Human Tom=new Indian Tom.Speak() End Sub End Class CONSTRUCTORS & DESTRUCTORS Imports System Class Dog Private Age as integer ‘Các cấu tử Public Sub New() Console.Writeline ("Dog is Created With Age Zero") Age=0 End Sub Public Sub New(val as Integer) Console.Writeline ("Dog is Created With Age " + Convert.ToString(val)) Age=val End Sub ‘Hũy tử Overrides Protected Sub Finalize() Console.Writeline ("Dog is Destroyed") End Sub ‘Hàm Main Shared Sub Main() Dim Jimmy, Jacky as Dog ‘Gọi cấu tử ngầm định Jimmy=new Dog ‘Gọi cấu tử tham số Jacky=new Dog(10) End Sub End Class PROPERTY ROUTINES Imports System Public Class Dog Private mAgeOfDog as Integer Public Property Age() As Integer Get Console.Writeline ("Getting Property") Return mAgeOfdog End Get Set(ByVal Value As Integer) Console.Writeline ("Setting Property") mAgeOfDog=Value End Set End Property End Class Class MainClass Shared Sub Main() Dim Jimmy as Dog Jimmy=new Dog Jimmy.Age=30 Dim curAge=Jimmy.Age() End Sub End Class Kế thừa từ Control Imports System Imports System.ComponentModel Imports System.Windows.Forms Imports System.Drawing Public Class SimpleForm Inherits System.Windows.Forms.Form Public Sub New() ‘Gọi cấu tử base class MyBase.New() ‘Đặt thuộc tính cho lớp dựa lớp base class Me.Text = "Hello, How Are You?" End Sub End Class Public Class MainClass Shared Sub Main() ‘Tạo đối tượng Dim sf as SimpleForm sf=new SimpleForm ‘Đẩy đối tượng cho hàm Run() để bắt đầu System.Windows.Forms.Application.Run(sf) End Sub End Class 4.3 VFP OOP Các lớp sở Kế thừa từ lớp sở Có thể xây dựng lớp (subclass) kế thừa từ lớp sở: -Với visual base class: Thường thiết kế thành file class VFP (phần mở rộng VCX/VCT)) Sử dụng lệnh: CREATE CLASS derived_class -Với non-visual class (và visual class): Thường đặt file PRG với khai báo DEFINE CLASS derived_class AS base_class Ví dụ: DEFINE CLASS MyCheckbox AS checkbox Height = 15 Width = 92 FontName = "Tahoma" FontSize = AutoSize = T Alignment = Caption = "MyCheckbox" Name = "mycheckbox" ENDDEFINE Các PEM • • • • Các PEM property, Event, Method Khi tao lớp, có số PEM mặc định Có thể tạo thêm PEM khác Mỗi PEM có thuộc tính: Type: gồm Property, Method Access: Thuộc tính truy xuất (như GET) Assign: Thuộc tính gám (như SET) Visibility: gồm Public, Protected, Hidden Ví dụ hình sử đổi thuộc tính lớp sử dụng kiểu visual class: Ví dụ lớp với định nghĩa DEFINE CLASS DEFINE CLASS mycheckbox AS checkbox Height = 16 Width = 97 FontName = "Verdana" AutoSize = T Alignment = Caption = "MyCheckBox" Name = "MyCheckBox" MyNewProperty = F PROCEDURE MyNewMethod MESSAGEBOX("Hello from a custom class") ENDPROC PROCEDURE MyNewProperty_Access *To do: Modify this routine for the Access method RETURN THIS.MyNewProperty ENDPROC PROCEDURE MyNewProperty_Assign LPARAMETERS vNewVal *To do: Modify this routine for the Assign method THIS.MyNewProperty = m.vNewVal ENDPROC ENDDEFINE Sử dụng lớp • Các visual class: chọn tạo đối tượng form • Các non-visual class: Sử dụng hàm CREATEOBJECT(), NEWOBJECT(), ADDOBJECT() • Để gọi method lớp cha, sử dụng DODEFAULT() • Rất nhiều vấn đề khác cần tìm hiểu BÀI TẬP Hết chương ... phổ biến • C# • VB.NET • VFP 4. 1 Lập trình hướng đối tượng C# Định nghĩa lớp [attributes] [access-modifiers] class identifier [:base-class [,interface(s)]] {class-body} #region Using directives... this.Minute = Minute; } } } } } Output: Debug : 03/11/2010 7:52: 54 Time : 03/11/2010 7:52: 54 Debug : 03/11/2010 7:52: 54 Time : 03/18/2010 11 :45 :30 Từ khố this • this sử dụng để tham chiếu đến thực thể... " + } "{0} and {1} seconds", } theMinute, theSecond ); } } Output: } 03/11/2010 14: 6: 24 the Minute is now: and 24 seconds the Minute is now: and seconds Các hàm overload cấu tử • Overload cho

Ngày đăng: 21/12/2017, 12:12

w