PDA

View Full Version : [Q] Viết module



newbie
14-05-2003, 14:31
Mình nghe nói lập trình viên chuyên nghiệp viết phần mềm thực chất chỉ là gắn các module có sẵn với nhau lại.Vậy viết module là viết cái gì vậy, có phải là viết mấy file .bas của VB không.Bác nào có vd về viết module thì chỉ mình với

ah_adodc
14-05-2003, 18:48
Mình không rõ lắm. Nhưng có thể là viết mấy cái tập tin dll.

Nicky
14-05-2003, 19:01
ya.
Trong VB các Module là các file .bas, thực chất nó cũng chỉ là một đoạn Code nhưng là public, tức là mọi Form trong Project đều có thể sử dụng nó. Module làm cho chương trình sáng sủa và dễ hiệu chỉnh, deburg hơn.

newbie
15-05-2003, 01:35
nếu vậy thì làm lập trình viên khoẻ thiệt chỉ viết vài file .bas là xong, sướng quá

trungnt88
15-05-2003, 19:12
ziết mấy cái bas về sau có nhu cầu dùng lôi ra , add zô -> xong thui ! he he ! khoẻ lắm !

White_Rose
16-05-2003, 02:15
Hic, module ở đây là các module phần mềm, là các đoạn chương trình hoàn thiện, có khả năng giải quyết một nhiệm vụ nào đó chứ không phải là module của VB. Chẳng hạn bạn phải viết chương trình quản lý hàng, có người viết một module cho việc nhập dữ liệu, người khác viết module cho việc tạo report còn bạn thì viết module cho việc tính toán. Cuối cùng chỉ cần gom 3 module đó lại với nhau là OK.
Các module hiện tại có nhiều lắm nên người ta ưu dùng luôn chứ không viết lại. Chẳng hạn để có cái menu đẹp như OfficeXP, có thể dùng ngay SmartMenu, có giao diện như MacOS thì dùng ActiveSkin...

KEM_WALL
16-05-2003, 18:59
tốt nhất nên tạo các module = c++
các dll của Vb thứ nhất là tính thừa kế giả, thứ 2 là kô thể đáp ứng hết nhu cầu về viết code của bạn. có những tính năng bạn chỉ tìm thấy trong c++.
nếu bạn viết những chương trình nhỏ thì kô nên chia làm nhiều module đâu. và đừng tưởng bở rằng làm nhiều module là viết code ngắn hơn, bạn vẫn phải gõ đúng số code mà bạn làm trong form thường, và còn thêm 1 số như file header ...
chỉ khi nào bạn làm 1 project thật lớn như ... 1 bộ office chẳng hạn
thì bạn hãy xài đến dll, khi đó các chương trình có thể sử dụng chung 1 bộ dll.

trungnt88
16-05-2003, 19:09
wal nói rõ cái mod một tý nha !

KEM_WALL
16-05-2003, 19:17
hổng hỉu ....

trungnt88
16-05-2003, 19:32
tác dụng của nó ! ích lợi , ... hiệu quả

KEM_WALL
16-05-2003, 20:04
tác dụng, ích lợi, hiệu quả của nó huh:
làm cho chương trình có khả năng cao trong việc update. VD thay vì phải update cả chương trình, bạn chỉ việc update dll chứa đoạn code ấy. service pack của MS theo cách này
như nói ở trên, việc chia thành module giúp các nhóm lập trình hiệu quả hơn. phân chia công việc rõ ràng hơn

newbie
18-05-2003, 00:22
White_Rose nói rõ hơn việc gom module đi(cách thức tương tác gom, tương tác giữa các module ấy).Tui nghĩ theo ý WR thì một module có thể là 1 phần mềm riêng , yes or no?.Nếu được thì gom chúng lại làm sao.
Tui thấy viết C++ cực quá nhất là giao diện đó, bạc tóc luôn.

tieuquaitu
18-05-2003, 02:28
nhiều module có thể làm nên phần mềm nhưng một module thì không làm nổi đâu,ngoại trừ cho....riêng bạn :D:D:D

Nicky
18-05-2003, 20:35
to tieuquaitu : U có liên quan gì đến quaitieutu không ? Nicky thấy U lấy cái tên như vây hơi lạ đó.
to tungnt88: Ví dụ rõ nhất là Windows đó, nó là tập hợp của rất nhiều Module đã được biên dịch thành dll mà chúng ta thường hay gọi là API, thực ra thì còn nhiều Dll khác không nằm trong API nhưg cũng có sức mạnh không kém. Các chương trình khác chỉ việc gọi các dll này thôi kể cả Windows - Windows là gì ? Ai định nghĩa hộ Nicky đi :D

White_Rose
18-05-2003, 23:18
Thông thường thì các module giấu mọi xử lý bên trong và chỉ giao tiếp với thế giới bên ngoài thông qua input data/output data mà thôi. Chuẩn giao tiếp bạn có thể tự định nghĩa hoặc thông qua các chuẩn như COM.
Một ví dụ bạn sẽ thấy rất rõ là WinXP. Nó có hai chế độ là Classic và sử dụng Theme. Việc tạo ra giao diện bắt mắt nhờ sử dụng theme là do file (***theme.dll <-- không nhỡ chính xác) đảm nhiệm. Đây là một module hoàn chỉnh đáp ứng cho việc hiển thị các thành phần. Các chương trình khác không cần quan tâm nó làm thế nào nhưng vẫn được hưởng kết quả tạo ra nhờ module này.
Thiển ý

Allbegins
21-05-2003, 13:55
Các Software chuyên nghiệp và đem phân phối thường phải được viết thành các OCX,DLL, ....

Các file OCX này là các Control dành riêng cho SoftW.
Các file DLL có thể chứa các lớp, hàm ... hoặc các chương trình nhỏ. Khi cần xài, SoftW chính sẽ gọi nó.

Các file Module.bas là file khai báo biến và hàm ở mức Pulbic.

Các OCX,DLL ... được hoạch định, lên kế hoạch chặt chẽ để viết. Nhất là phải có sự thống nhất trong toàn Project.

Ví dụ CT chính cần sử dụng 3 hàm a(),b(),c(). Các hàm này thường xuyên được dùng lại. Các hàm này cũng không có trong bộ hàm chuẩn của VB. Do đó, có 2 giải pháp:
1. Khai báo chúng trong 1 Module (ví dụ là: abc.bas). Các Form và Module khác có thể gọi a(),b(),c() bất cứ lúc nào.
2. Viết 1 Class, và khai báo a(),b(),c() là hàm của Class này. Ví dụ ABCClass. Sau đó biên dịch chúng thành DLL.
Khi sử dụng sẽ khai báo 1 Object có kiểu class ABCClass. Và gọi hàm a(),b(),c() theo kiểu hướng đối tượng quen thuộc như sau:

dim abcObj as new ABCClass ' tạo 1 Object
.... = abcObj.a() ' sử dụng
.... = abcObj.b()
.... = abcObj.c()


Nếu có thay đổi, giải pháp thứ 2 có thể Update bằng cách biên dịch lại và chép đè (hoặc Regist lại) DLL mới cùng tên với DLL đó.
Giải pháp thì chịu thua, phải biên dịch lại toàn CT.

Việt triển khai 1 SoftWare theo kiểu Module cũng tương tự như vậy
Người ta sẽ viết thành nhiều DLL, nghĩ là có nhiều Class. Và mỗi Class có 1 chức năng cụ thể. Khi cần Update chỉ việc Update Class cần thiết. Khi muốn thên Class cũng dễ dàng. Tuy nhiên trong các Class khác phải lưu ý khả năng Update và mở rộng của chúng. Do đó giai đoạn phân tích và thiết kế Class rất quan trong. Gần như nó quyết định sự khó khăn hay thuận lợi trong giai đoạn viết Code.


Để hiểu rỏ hơn về kỹ thuật này, bạn có thể tìm thấy trong nhiều E-Book nói về OOP viết bằng VB.
Trong .NET viết Class đã trở thành bắt buộc và khá rõ ràng. Nếu ai yêu thích viết OOP với VB có thể nghỉ tới việc chuyển sang VB.NET. :D

newbie
22-05-2003, 00:01
Sẵn đây Allbegins có ebook về cái này hông thì gửi cho tui đi,đã post bài thì ebook luôn,giúp người giúp cho trót mà.Mail của tui nè: baoanh14@yahoo.com.
Cám ơn Allbegins lắm lắm và cám ơn các u khác đã , đang và sẽ post bài giải đáp thắc mắc của tui.

ah_adodc
23-05-2003, 18:23
Hê hê, sẵn đây cho đệ hỏi luôn. Hình như mấy cái dll tĩnh (không đăng kí được với regsvr32) khó xài hơn dll động thì phải. Lần trước đệ có viết vài tập tin dll (tĩnh) để xài, đệ khai báo trong module như bình thường : Private Declare Function MyFunc lib mydll.dll(). Lúc bình thường thì chạy rất tốt. Nhưng khi có xài tới CommonDialog (liên quan tới thư mục như .ShowOpen...) thì khi làm gì có liên quan tới cái hàm MyFunc thì nó báo lỗi "File not found mydll.dll", dù đệ có bỏ tập tin đó vào thư mục hiện hành hay thư mục hệ thống gì đi nữa thì nó vẫn diễn ra như thế. Các huynh nghĩ sao về việc này ? Giúp đệ với !

trungnt88
23-05-2003, 18:51
thank
các pác có thể cho ví dụ dùng mod hông qui trình làm cách dùng , add , remove , update , lệnh trong VB truy cập mod , ... càng nhiều càng cảm ơn !

KEM_WALL
23-05-2003, 20:07
để sử dụng 1 cái dll trong VB
bạn chẳng cần phải declare gì cả (lưu ý với điều kiện có file .lib và .exp )
vào trong project | ref | chọn tên dll đó. VD ở đây có 1 dll ten la` abcdll chứa 1 class tên là classabc được public
sau đó vào 1 module nào đó khai báo

dim withevents abc as abcdll.classabc
sub form1_load()
set abc = new abcdll.classabc
end sub

sau đó thì xài như 1 object bình thường