Logo of Vovisoft

Mục Vấn Ðáp (Faq) Tin Học

Gõ vào đầu đề phía bên trái để nhìn thấy các đề phụ.
Muốn khép các đề phụ hãy gõ đầu đề thêm một lần hoặc gõ vào đầu đề khác.

Frequently Asked Questions (Faq)

Faq về Vovisoft
Faq về Visual Basic
Faq về Tin Học   

Mục Vấn Ðáp Frequently Asked Questions (Faq) là những câu hỏi thường được đặt ra trong Tin Học. Trong phần này chúng tôi sẽ đăng tất cả những câu hỏi thường được học viên đặt ra trong lớp học Visual Basic của Vovisoft.

OOD là gì ?

OOD là viết tắt chữ Object Oriented Design. Ðây nói về đường hướng thão chương mới trong 15 năm nay. Có khi người ta còn gọi là OOP ( Object Oriented Programming). So sánh với các tiến bộ của hardware, nhu liệu có phần chậm tiến. Trong khi người ta có thể chế một mạch điện mới bằng cách sắp xếp những bộ phận rời rạc (các miếng IC - Integrated Circuits) lại với nhau thì hầu như mỗi lần bắt đầu một dự án mới các thão chương viên lại bắt đầu từ con số không.

Nếu quan sát Toolbox của Visual Basic, ta sẽ thấy nó chứa nhiều Control (còn gọi là Object) như Label, TextBox, ListBox, CommandButton .v.v.. Ta có thể đặt các control ấy lên một Form khi thiết kế một nhu liệu. Các Control đó cűng giống như các IC trong mạch điện. Ngày nay khi viết VB ta có thể dùng ngay các Control mà Microsoft đã làm sẵn.

Thiết kế những Control sao cho các thão chương viên khác có thể dùng lại được thì gọi là OOD. Nói tóm lại với OOD ta có thể thão chương dùng những Control tiền chế. Microsoft còn gọi các Control nầy là Component. Bây giờ ta thử bàn thêm xem Object là gì? Nếu chỉ xem Object như một miếng vách xi măng tiền chế được cần trục nhắt lên để ráp thành một vách tường của một building thì rất là giới hạn. Object sống động hơn một miếng xi măng vô tri, vô giác.

Ta thử xem ListBox. Nó là một Object điển hình. ListBox có những đặc tính sau:

  1. Properties: như Listcount ( số hàng trong ListBox), Font, BackColor, ListIndex, List .v.v.
  2. Methods: như Clear, AddItem, RemoveItem .v.v..
  3. Events: như Click, Mousedown, LostFocus .v.v..
    Thật ra Listbox chỉ là một ý niệm. Khi ta đặt một ListBox đầu tiên lên một Form, by default (tự nhiên nếu không lên tiếng) VBIDE đặt tên nó là List1 (dĩ nhiên bạn có thể đổi tên đó). List1 mới là một Object hiện hữu mà ta dùng. Từ Class ListBox ta có thể tạo nhiều Listboxes như List1, List2, List3, MyListBox, YourListBox .v.v.., giống như từ một khuôn bánh ta có thể làm rất nhiều cái bánh.

Mặc dầu hai chữ Class và Object thường được dùng lẫn lộn như một thứ nhưng ở đây ta thử phân biệt cho rõ ràng để lấy le với con cháu. Listbox là một Class, trong khi List1 là một Object hay Instance của Class ListBox. Ta nói ListBox Class instantiate để cho ra List1. Giai đoạn List1 lọt lòng mẹ ta gọi là instantiation.
Như vậy ta đã thừa hưởng những lợi ích của OOD lâu nay khi dùng MSWindows và thão chương VB. Mỗi Window mà ta thấy trên Desktop là một Object.

Khi thão chương ta thấy ListBox tự lo liệu việc display các hàng trong ListBox.  Khi ta cho thêm hay lấy ra một hàng nó tự cập nhật hóa display và thay đổi giá trị (value) của Listcount một cách tự động. Khi ai đã click lên một hàng thì ListBox nhớ hàng đó bằng cách chứa value trong List1.ListIndex. Khi ta cho một hàng mới vào, ngay cả khi List1.Sorted=True, ta có thể biết hàng mới cho vào nằm ở đâu trong ListBox bằng cách xem List1.NewIndex. Ngoài ra khi ta cho List1.BackColor một màu mới, không phải List1 chỉ ghi nhớ sự kiện ấy thôi, nó lập tức display Listbox trở lại với màu Background mới. Các Events của ListBox cho ta những dịp để có phản ứng hợp thời cho chúng bằng cách viết code trong các Sub Events như List1_Click, List1_MouseDown .v.v..

Ngoài những đặc tính như Properties (những phẩm chất), Methods (những công chuyện Object làm được) và Events (những biến cố Object sẽ báo cho ta biết khi nó xãy ra), Nhìn từ mặt khác, một Object có những đặc tính sau:

  • Encapsulation: (được gói ghém lại) Trừ khi một Property của Class được tuyên bố xuất khẩu (ở đây chữ Class và Property có nghĩa tổng quát, chớ không phải Class và Property của VB), không ai ở ngoài có thể đụng đến nó được. Thí dụ muốn nói đến một variable Var1 của Form2 ta viết: Form2.Var1. Nhưng ta chỉ có thể làm được điều nầy khi ta tuyên bố trong Form2 :
    Public Var1
  • Inheritance: (thừa kế) Ta có thể chế một Class Con mới từ một Class Mẹ có sẵn. Và Class mới nầy sẽ tự động mang tất cả đặc tính của Class Mẹ . Thí dụ hầu hết các Control ta thấy trong VB ToolBox đều là Window, chúng là những đứa con mặt műi hơi khác nhau nhưng đều thừa kế những đặc tính của Class Window Mẹ. Chúng đều có thể display hình chữ nhật, có khung, nhận MouseClick, Keystroke và gởi các message cho nhau. VB không phải là ngôn ngữ thão chương cho ta làm Inheritance cách tự nhiên như C++, Java hay Delphi. Tuy nhiên ta cűng có cách để làm được chuyện đó mặc dầu không thanh nhả (elegant) lắm.
  • Polymorphism: (đa dạng) Nói cùng một câu nhưng tác dụng khác nhau tùy hoàn cảnh. Thí dụ ta có nhiều Hình chữ nhật, Hình tròn, Hình tam giác trên màn ảnh. Tất cả các Class Hình nầy đều là con của Class Hình Vẽ. Class Mẹ Hình Vẽ có một Method tên là Draw (tự vẽ). Khi các Class Hình con được tạo ra mỗi Class đều có một Method mang cùng tên Draw nhưng cái thì vẽ hình chữ nhật, cái thì vẽ hình tròn, cái thì vẽ hình tam giác. Trong chương trình ta có thể nói khơi khơi là bảo mọi hình tự vẽ. Lúc ấy các method Draw tuy cùng tên, nhưng khác nhau sẽ display các hình vẽ.

Ngoài đời ta có trường hợp tương tự như vậy. Khi tôi phải hủy bỏ chuyến nghỉ phép sau khi đã dặn chỗ mọi thứ, tôi sẽ dùng cùng một câu 'Cancel Booking' nói với ba chỗ để hồi lại Vé phi cơ, Phòng ngủ và Xe hơi mướn. Nhân viên làm việc mỗi nơi đều hiểu ý tôi muốn Cancel Booking gì. Như thế cùng một câu 'Cancel Booking' nhưng có ba nghĩa khác nhau tùy theo cảnh huống (context).

Polymorphism liên hệ trực tiếp với Inheritance. Vì VB không phải là một ngôn ngữ thão chương yểm trợ Inheritance cách tự nhiên, nên muốn thực hiện polymorphism bằng VB cűng được, nhưng hơi mắc công.

Thão chương theo cách Procedural là dùng chỉ một process hay task. Giống như một người vừa ẳm em, vừa nấu cơm, vừa bửa củi, mọi chuyện do một tay mình chịu trách nhiệm, buông bên nầy, bắt bên kia. Còn thão chương theo cách OOD thì phân công ra cho nhiều người (Object), mỗi người khi nào làm xong một giai đoạn hay cần thiết điều gì thì báo cáo.

Trong OOD ta không ngồi đợi chuyện gì xãy ra để giải quyết, nhưng cứ làm công chuyện bình thường, còn cái gì cần mình giải quyết nó phải phát sinh một biến cố (Event) để lôi cuốn sự chú ý của ta và nhờ ta giải quyết.


Client/ Server là gì?

Client là khách hàng, Server là người phục vụ. Thường thường chữ Client / Server nói đến trường hợp nhu liệu (Client) chạy ở nhiều computers cần lấy dữ kiện từ một database ở một computer nào nó trong mạng. Database nầy tự nó là một nhu liệu đang chạy trong một process riêng để phục vụ (gọi là Database Server). Khi nó nhận được lời yêu cầu từ Client nào nó sẽ phục vụ Client ấy. Thí dụ Database Oracle chạy trên máy WindowsNT Server. Oracle là Database Server.

Còn Access Database để trong một Disc Folder cho nhiều nhu liệu trên mạng xài chung thì có phải là Server không? Vì Access không tự nó chạy như một process nên được gọi là Shared File Database chớ không phải là một Server Database.

Dùng Access giống như làm việc trong một sở nhỏ, mọi nhân viên tự nấu mì gói, pha cà phê để dùng cơm trưa. Còng dùng Database Server giống như làm việc trong sở lớn có mướn người nấu mì, pha ca phê cho nhân viên, nên không ai động đến một ấm nước.

Vậy tại sao ta phải cần đến Database Server? Sản phẩm SQL Server, Database Server của Microsoft là database cấp bậc kỹ nghệ so với Access là database dùng trong các ứng dụng nho nhỏ. Access có giới hạn về cở lớn và nếu 4, 5  nhu liệu dùng database cùng một lúc ta sẽ gặp khó khăn. Ngoài ra SQL Server cho phép ta sắp đặt cho ai được phép đọc/viết database với LogIn và Password.


ODBC Driver là gì?

ODBC và viết tắt chữ Open Database Connectivity, một chuẩn do Microsoft đặt ra. Vì mỗi database đều có một ngôn ngữ thão chương khác nhau nên trong kỹ nghệ người ta đều đồng ý dùng một ngôn ngữ database phổ thông. Ðó là Structured Query Language (SQL). Mỗi nhà sản xuất Database đều cung cấp một ODBC Driver yểm trợ SQL để ta dùng trong MSWindows.

Một Database có ODBC Driver thì xem như mở ra (Open) cho thiên hạ móc nối (Connect) để tiếp xúc. Ðối với thão chương viên VB, ta chỉ cần biết Database ở đầu kia yểm trợ ODBC là đủ, không cần biết nó hiệu gì. Mai mốt có thay đổi database cűng không ảnh hưởng nhu liệu ta đã viết bằng VB.


ADO là gì ?

ADO là viết tắt chữ Active Data Objects. Ðây là một bộ các Object dùng để làm việc với Database. Mặc dù ta có thể nói chuyện với mọi Database bằng cách dùng ODBC Driver của nó. Nhưng ngôn ngữ SQL tương đối khó nhớ và không uyển chuyễn. Ðiển hình là Oracle đặt ra một ngôn ngữ tên là PL-SQL (Procedure Language SQL), là tập hợp của Modula-2 (giống Pascal) và SQL để làm việc dễ hơn trong Oracle database. Microsoft có tham vọng muốn chế một loại ActiveX có thể đọc tất cả mọi loại database, kể cả trường hợp database đó là một textfile. ActiveX đó được gọi là OLE DB.  Microsoft gói các ODBC Drivers và những database driver khác vào bên trong OLE DB. ADO là em của OLE DB, nó yểm trợ cách thão chương dễ nhớ, dễ hiểu dùng collection để làm việc với cấu trúc và bộ phận trong database.

ADO cho phép chúng ta dùng nhiều phương tiện phong phú hơn để tạo các Table hay làm những Query bằng cách dùng hình ảnh thay vì viết SQL code. Cùng những phương tiện nầy ta có thể dùng cho bất cứ Database nào ADO yểm trợ, ngay cả một Database mới ra mà chính nó cűng không có phương tiện thiết kế data structure/ query bằng hình ảnh.

ADO là kỹ thuật mới nhất đã trưởng thành mà Microsoft đang dùng cho tất cả mọi nhu liệu. Ta phải lần lượt thay thế các chỗ dùng DAO (Data Access Object) bằng ADO. Nếu trong Code có dùng cả hai DAO và ADO, ta phải nói rõ Object kỹ thuật nào, nếu Object có trùng tên bằng cách dùng:

Dim Myset as ADO.Recordset
thay vì
Dim MySet as Recordset
để khỏi làm VB lầm lẫn.



COM là gì ?

COM là viết tắt chữ Component Object Model. Component là bộ phận, còn Model nghĩa là gì? Ngày xưa các nhu liệu WordProcessor, SpeadSheet, Database đều nằm riêng. Ðể dùng chung với nhau ta có thể mua một nhu liệu gọi là integrated package, nó gồm cả ba thứ vô làm một, nhưng thứ nào cűng xài tạm được chớ không xuất sắc như từng nhu liệu riêng. MSWorks là một sản phẩm như thế. Với MSWorks ta có thể dùng phương tiện database để vô danh sách bạn bè, kế đó dùng phương tiện WordProcessing để viết thơ, rồi dùng phương tiện MailMerge để gởi cùng một lá thư đến nhiều bạn hữu.

Tiếp theo, Microsoft nghĩ ra cách để vô giữa một lá thư (Word document) một Speadsheet bằng cách đặt một rỗ chứa một Speadsheet Object. Kỹ thuật nầy gọi là Object Linking and Embedding (OLE). Làm như thế Microsoft cho user sự tiện lợi như intergrated package mà không làm giảm khả năng của mỗi nhu liệu. Ðể có thể đặt một Object vô một cái rỗ như nói trên đòi hỏi Microsoft phải thiết kế nó cách nào cho tiện lợi cách dùng nó như một bộ phận tiền chế. Cách các nhu liệu chia xẻ dữ kiện và các dịch vụ phải được phân định rõ ràng vì chúng không nhất thiết nằm trong cùng một computer.

Lần lần Microsoft hoàn hảo kỹ thuật OLE mới đổi tên nó ra ActiveX, với ý định sẽ dùng kỹ thuật nầy khắp nơi trên Web. Không phải chỉ có Microsoft mới sản xuất được các bộ phận ActiveX. Thật ra Microsoft phổ biến và giúp đở các nhà sản xuất nhu liệu chế những ActiceX theo đúng qui luật đã được thiết kế để dù ta dùng Delphi hay C++ đều có thể làm ActiveX được. Tất cả những qui luật đó gọi chung là Component Object Model.

ActiveX được chia ra làm hai loại chính: DLL và EXE. DLL là viết tắt chữ Dynamic Link Library. Ý nói nhu liệu áp dụng của ta sẽ dùng DLL ActiveX component như một phần của Code mình nhờ người khác viết giùm. Code được viết ra để dùng lại nhiều lần gọi là Library. Dynamic Link có nghĩa là khi nào cần dùng mới lấy nó từ hard disk bỏ vô memory. DLL thì không chạy riêng như một process, nó được coi như một Sub hay Function của nhu liệu ta viết. Do đó gọi là in-process. DLL có khi được chứa trong file có tên với Extension là OCX. Còn EXE thì chạy trong một process riêng, như một Server, có thể phục vụ nhiều Client processes cùng một lúc.

Microsoft dùng COM trong khắp nơi của Office 2000. Mỗi nhu liệu như WinWord, Excel chẳng qua là tổng hợp của nhiều ActiveX, và có nhiều ActiveX được dùng chung cho nhiều nhu liệu. Khi xưa mỗi nhu liệu là một Hộp Ðen (Black Box) khiến user chỉ biết lấy đức tin mà dùng chớ không biết có cái gì bên trong. Ngày nay, Microsoft mở ra (expose) hết mọi ActiveX, nên cho phép ta:

  1. Sừa đổi cách Microsoft xử lý một vấn đề bằng cách thay thế một Function của Microsoft bằng một Function khác do ta viết.
  2. Viết thêm những Functions mới rồi cho vào Menu bar của nhu liệu để dùng y như chính Microsoft đã cung cấp các Function ấy. Trường hợp nầy ActiveX ta viết để gắn vô được gọi là Add-In.