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

Cấu trúc

  • Chương 4 Lập trình hướng đối tượng trong một số ngôn ngữ lập trình phổ biến hiện nay

  • Tìm hiểu các phương pháp OOP trong một vài ngôn ngữ lập trình phổ biến hiện nay

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Tạo các đối tượng

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Sử dụng các thành phần static

  • Hũy các đối tượng

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Vấn đề truyền tham số

  • Slide 19

  • Slide 20

  • Slide 21

  • Các hàm overload và các cấu tử

  • Slide 23

  • Slide 24

  • Lấy dữ liệu với các thuộc tính

  • Slide 26

  • Slide 27

  • Kế thừa (Inheritance)

  • Đa hình (Polymorphism)

  • Slide 30

  • Các lớp trừu tượng (Abstract Classes)

  • Slide 32

  • Gốc của tất cả các lớp: Object

  • Slide 34

  • Các lớp lồng nhau

  • Slide 36

  • Các giao tiếp (Interfaces)

  • Slide 38

  • Slide 39

  • Slide 40

  • Slide 41

  • Slide 42

  • Slide 43

  • Slide 44

  • Slide 45

  • Slide 46

  • Slide 47

  • Slide 48

  • Slide 49

  • Slide 50

  • Slide 51

  • Slide 52

  • Slide 53

  • Slide 54

  • Slide 55

  • Slide 56

  • Slide 57

  • Slide 58

  • Slide 59

  • Slide 60

  • Slide 61

  • Slide 62

  • Slide 63

  • Slide 64

  • Slide 65

  • Slide 66

  • Slide 67

  • 4.3. VFP và OOP

  • Các lớp cơ sở

  • Kế thừa từ lớp cơ sở

  • Slide 71

  • Các PEM

  • Slide 73

  • Slide 74

  • Sử dụng các lớp

  • BÀI TẬP

  • Slide 77

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