Kỹ thuật lập trình - Làm quen với các khái niệm OOP

Một số phần mềm lập trình C#

 

Các khái niệm trong OOP

 

Nhìn lại các vấn đề đã bàn

 

Lập trình Windows

 

ppt124 trang | Chia sẻ: Mr Hưng | Lượt xem: 932 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Kỹ thuật lập trình - Làm quen với các khái niệm OOP, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
* Làm quen với các khái niệm OOP*Nội Dung Trình BàyMột số phần mềm lập trình C#Các khái niệm trong OOPNhìn lại các vấn đề đã bànLập trình Windows*Một số phần mềmBorland C# BuilderSharp Develop 2.0 (Open Source)Visual Studio DOT NET2003 – NET FrameWork 1.0 1.2 (System.Console không hỗ trợ 1 số phương thức :màu,di chuyển cursor,..)2005 – NET FrameWork 2.0*Ưu và khuyết điểmTốn chi phí : bản quyềnKích thước lớn : dung lượngTích hợp nhiều công cụGiao diện thuận tiệnTích hợp nhiều ngôn ngữ lập trình (VB, J#, C++,..)Dễ dàng lập trình GUITrợ giúp (Help)*Borland C# Builder*Borland C# Builder*Borland C# Builder (tt)*C# Builder (Window Form)Ứng dụng Window Form*C# Builder (Window Form)Vùng DesignThẻ CodeCác tập tin*C# Builder (Window Form)Vùng Code*C# Builder (Console App)Ứng dụng Console*C# Builder (Console App)Hàm xây dựng tự sinh (không nên xóa bỏ)*Sharp Develop 2.0Open source code*Sharp Develop 2.0*Sharp Develop 2.0Cosonle App.Window Form*Sharp Develop 2.0Trợ giúp*Sharp Develop 2.0Hàm OverloadHàm xây dựng tự sinh (không nên xóa bỏ)*Visual Studio NET*Visual Studio NET*Visual Studio NETTự phát sinh code cần thiết*Visual Studio NETThu gọn, mở rộng vùng code*Visual Studio NET*Visual Studio NETTrợ giúp khi viết code*Visual Studio NETChọn lựa các phương thức*Visual Studio NETLiệt kê danh sách các “phiên bản” của 1 phương thức overload*Visual Studio NET*Visual Studio NETThi hành CT*Visual Studio NETLỗi cú pháp+thông báo*Visual Studio NET*Visual Studio NETLỗi và vị trí phát hiện*Visual Studio NET*Visual Studio NET*Visual Studio NET*Visual Studio NET*Visual Studio NET*Visual Studio NET*Visual Studio NETDịch chương trình*Visual Studio NETThông báo dịch*Visual Studio NETKết quả thi hành (quay trở về ngay)*Visual Studio NET*Visual Studio NETThêm dòng Console.ReadLine();*Visual Studio NET*Visual Studio NETFolder chứa project*Visual Studio NET*Visual Studio NET*Visual Studio NET*Visual Studio NETDouble click để thi hành*Visual Studio NET*Cấu trúc mẫu tinCho phép phối hợp các kiểu dữ liệu cơ bản trong cùng 1 tổ chức dữ liệu để thể hiện các đối tượng trong thực tếVí dụSinh viên : họ tên, ngày sinh, điểm TBHóa đơn : mã số HĐ, ngày ghi, danh sách dòng hóa đơn, tổng tiền,...*Ví dụType Ngay = Record ngay, thang, nam:integer; End; HocSinh= Record hoten:String; ngaysinh : Ngay; End;Var a,b : Ngay ; x,y : HocSinh; list : Array[1..10] of HocSinh; *Tổ chức trong CKhai báo kiểustruct { ; . ; };Khai báo biến ;*Ví Dụstruct Ngay {int ngay, thang, nam;}; struct HocSinh { char hoten[30]; Ngay ngaysinh; };Khai báo biến Ngay a,b; HocSinh x,y, list[10] ;*Minh họa 1 biến kiểu cấu trúc*Truy xuất 1 biến cấu trúcX.HOTEN := ‘LE ANH HUY’;READLN(X.NGAY.THANG) ;TUOI := 2006 - X.NGAY.NAM ;*Vấn đềDữ liệu và xử lý tách rời nhauXử lý thường ổn địnhDữ liệu thường hay biến động : theo thời gian, theo hiện trạng“Khủng hoảng phần mềm” xuất hiện vào thập niên 90Giải quyết : lập trình hướng đối tượng*Ý tưởngCác xử lý gắn liền với dữ liệuMã giảVar X : HocSinh X.InLyLich X.TuoiHienTaiVar List : Array[1..10] of HocSinhFor i=1 to 10 do List[i].InLyLich*Các đặc điểm của OOPĐóng gói(Encapsulation) Dữ liệu kết hợp với xử lý Che dấu các thông tin không cần thiết Phạm vi truy xuất (public, private)Thừa kế (Inherited) Tạo ra các lớp mới từ các lớp có sẵn Đa thừa kế !!!Đa hình (Polymorphism) Cùng 1 hành động, phương thức nhưng tuỳ theo đói tượng --> kết quả khác nhau*Lớp (class),đối tượng (object)Lập trình truyền thống Type SV = Record ten : string; ns : integer; End; Var X: integer; Y : SV;SV, integer : Kiểu dữ liệuX, Y : biến*Lớp (class),đối tượng (object)Lập trình OOPLớp : tương đương kiểu dữ liệuĐối tượng : tương đương biếnLưu ý cơ chế cấp phát : cấp phát động, dùng con trỏ quản lý nhưng “che dấu” với NSDPhân biệt khai báo với cấp phát vùng nhớ A a ; // khai báo a = new A ( ) ; // cấp phátChính là gọi hàm xây dựng*Khai báo 1 lớpKhai báo lớp “đơn giản”class { };*Vi dụclass NGAY{ public int ngay; public int thang; public int nam ; NGAY ( ) { ngay=thang=nam=0;} public void InNgay( ) { Console.WriteLine(“{0}/{1}/{2}”,ngay, thang, nam); }}*Khai báo đối tượngCú pháp = new ;Ví dụ NGAY n1 = new NGAY ( ) ; NGAY[ ] n2 = new NGAY[10]; for (int i=0;i. .([dsts])Với dữ liệu, phương thức non-static . .([dsts])*class A{public static int i;public int j;public static float f;public float g;}A a1 = new A ( ) ;A a2 = new A( );a1.j = 10;a2.g = 20;A.i = 30;A.f = 40;a1a2 j g j g if*class A{public static int i;public int j;public static float f;public float g;}a1a2 j gifA a1 ;A a2= new A();a1.j = 10;a2.g = 20;A.i = 30;*class A{public static int i;public int j;public static float f;public float g;public static void u() { ..}public static void v() { ..}}ifA.i = 10;A.f = 20;A.u( );A.j = 30;A.g = 40;A.v ();A a ;a.i =10;a.j = 20;a.f = 30;a.g = 40;a.u();a.v();*class A{public static int i;public int j;public static float f;public float g;public static void u() { ..}public static void v() { ..}}ifA a ;a = new A();a.i =10;a.j = 20;a.f = 30;a.g = 40;a.u();a.v();*Không khai báo “biến” bên ngoài ???class Test{int i; float j;class Test ( ) { }public static void Main() { i=12; //SAI j=23; //SAI }}*Cách xử lýclass Test{static int i; // khai báo là staticstatic float j;public static void Main() { i=12; // có thể truy xuất trực tiếp j=23; }}*Cách xử lýclass Test{int i; float j;public static void Main() { Test t = new Test(); // tạo đối tượng t.i=12; // truy xuất thông t.j=23; // qua đối tượng }}*Vì sao khai báo các “hàm” là static ???class A{public void Test ( ) //không có static { }public static void Main( ) { Test ( ); // SAI : vì non-static nên phải //gọi thông qua đối tượng }}*Cách xử lýclass A{public static void Test () // khai báo static { }public static void Main( ) { Test ( ); // Đúng : gọi trực tiếp }}*Cách xử lýclass A{public void Test ( ) //không có static { }public static void Main( ) { A a = new A ( ); // tạo đối tượng a.Test ( ); // rồi gọi qua đối tượng }}*Dữ liệu động/phương thức tĩnh ???class A{ int i; static int j; static void Test() { i = i + 5 ; //SAI vì i gắn với 1 đt cụ thể!! j = j + 10; } }*Cách xử lýclass A{ int i; static int j; static void Test( A z) { z.i = z.i + 5 ; j = j + 10; } }*Sử dụng các lớp NET FrameWork ???**Tra cứu trong Help của DOT NET**Lớp ArrayListCung cấp các phương thức, dữ liệu cho phép tổ chức, khai thác 1 mảng các phần tử*Các hàm xây dựng, khởi tạoArrayList a = new ArrayList();ArrayList b = new ArrayList(10);*Một số phương thứcpublicstatic*Phương thức AddSử dụng.Add (phần tử>);*Ví dụ sử dụngusing System;using System.Collections;public class SamplesArrayList { public static void Main() { // Creates and initializes a new ArrayList. ArrayList myAL = new ArrayList(); myAL.Add( "The" ); myAL.Add( "quick" ); myAL.Add( "brown" ); myAL.Add( "fox" ); // Displays the ArrayList foreach ( Object obj in myAL) Console.Write( "{0}{1}", ‘\t’, obj ); Console.WriteLine(); }  }*Phương thức InsertSử dụng.Insert(vị trí,phần tử>);*Ví dụ sử dụngusing System;using System.Collections;public class SamplesArrayList { public static void Main() { // Creates and initializes a new ArrayList using Insert ArrayList myAL = new ArrayList(); myAL.Insert( 0, "The" ); myAL.Insert( 1, "fox" ); myAL.Insert( 2, "jumps" ); myAL.Insert( 3, "over" ); myAL.Insert( 4, "the" ); myAL.Insert( 5, "dog" );  // Displays the ArrayList and the Queue. foreach ( Object obj in myAL)Console.Write( " {0}", obj );} }*Lớp Math : các hàm toán họclớp staticdữ liệuSử dụngMath.EMath.PI*Các “hàm” toán họcPhương thức, publictĩnh (static)*Các “hàm” thường “overload”Cùng tên nhưng khác nhau (tsố,slượng ts,...)*Quan sát cú pháp 1 hàm cụ thểpublic staticSử dụngMath.Max(x,y);*Visual Studio NET (Win Form)*Visual Studio NET (Win Form)*Visual Studio NET (Win Form)*Visual Studio NET (Win Form)Hộp Toolbox : các công cụ thiết kế*Visual Studio NET (Win Form)Tiêu đề của sổ*Visual Studio NET (Win Form)Thêm label vào form*Visual Studio NET (Win Form)Sửa lại nội dung nhãn*Visual Studio NET (Win Form)Thêm textbox vào formtên truy cập*Visual Studio NET (Win Form)Sửa nội dung textbox*Visual Studio NET (Win Form)Thêm 1 label và 1 button vào formCanh lề*Visual Studio NET (Win Form)Xem Code (bấm nút phải trên vùng Design)*Visual Studio NET (Win Form)Xem Code:chọn trong vùng Solution Explorer*Visual Studio NET (Win Form)Xem Code : menu View/Code*Visual Studio NET (Win Form)Tự động using các thành phầnKhai báo các biến thành phầnCó thể sửa lại là public !!*Visual Studio NET (Win Form)hàm Main đơn giản : khởi tạo 1 đối tượngvà gọi thi hànhtương đươngForm1 f = new Form1( );Application.Run(f);Hàm xây dựng*Visual Studio NET (Win Form)Thêm sự kiện xử lý khi bấm vào nút nhấn*Visual Studio NET (Win Form)Viết code bình thường như 1 hàm xử lý*Visual Studio NET (Win Form)*Visual Studio NET (Win Form)Thay đổi nội dung nhãnLấy thông tin từ vùng textbox*Visual Studio NET (Win Form)Thi hành chương trình*Visual Studio NET (Win Form)Kết quả khi bấm vào nút Tinh Tuoi*Visual Studio NET (Win Form)*Visual Studio NET (Win Form)*Visual Studio NET (Win Form)*Visual Studio NET (Win Form)*Visual Studio NET (Win Form)Chương trình ứng dụng đã được dịch (kích thước rất nhỏ !!!!)*Visual Studio NET (Win Form)Bấm đúp để thi hành trực tiếp (máy phải có cài Net FrameWork!! )*Buổi sauCấu trúc mẩu tinXử lý tập tinGiới thiệu 1 số ứng dụng đơn giản xây dựng với Visual Studio DOT NET (VB Dot Net, J#,PC handheld, Web page, Web service,..)

Các file đính kèm theo tài liệu này:

  • pptcosolaptrinh_csharp_bai7_1335.ppt
Tài liệu liên quan