ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN MÔN HỌC PHƯƠNG PHÁP LUẬN SÁNG
TẠO TRONG KHOA HỌC
Đề tài: Trình bày một số nguyên lý sáng tạo cơ
bản và Áp dụng các nguyên lý sáng tạo vào
trong lập trình tin học
Giảng viên hướng dẫn : GS.TSKH Hoàng Văn Kiếm
Học viên thực hiện : Nguyễn Thị Ngọc Diễm
MSHV: CH1101075 Lớp: Cao học K6-2011
TP Hồ Chí Minh, tháng 04 năm 2012
i
LỜI NÓI ĐẦU
Phương pháp luận sáng tạo và đổi mới là việc ứng dụng khoa học của sự
sáng tạo gồm hệ thống các phương pháp và kỹ năng cụ thể giúp nâng cao năng
suất và hiệu quả, về lâu dài tiến tới điều khiển tư duy sáng tạo của người sử dụng.
Phương pháp luận sáng tạotrong khoa học là kết quả của quá trình khái quát
lý thuyết và thực tiễn nghiên cứu khoa học và trở thành công cụ sắc bén để chỉ dẫn
các nhà khoa học, các nhà quản lý trong công tác tổ chức, quản lý và thực hành
nghiên cứu khoa học một cách sáng tạo.
Nắm vững phương pháp luận nghiên cứu khoa học là nắm vững lý thuyết về
con đường sáng tạo, giúp người nghiên cứu có cách tiếp cận đúng trong việc thiết
kế và thi công công trình nghiên cứu khoa học, tìm chọn phương pháp nghiên cứu
hợp lý để thực hiện nhiệm vụ nghiên cứu và đạt được mục đích nghiên cứu.
Ngày nay, việc ứng dụng phương pháp sáng tạo để phát triển các hình thức
lập trình trong tin học cũng như sự ra đời của nhiều ngôn ngữ lập trình cấp cao dẫn
đến một bước tiến lớn về sự phát triển mạnh mẽ của công nghệ thông tin. Mặc dù
công nghệ thông tin là ngành học mới được phát triển trong thời gian gần đây,
nhưng ảnh hưởng của nó đến đời sống kinh tế xã hội đòi hỏi con người cần nhìn rõ
được tầm quan trọng đó. Do vậy việc áp dụng phương pháp sáng tạo trong quá
trình giải quyết các vần đề tin học có ý nghĩa vô cùng to lớn.
ii
MỤC LỤC
LỜI NÓI ĐẦU i
Chương 1: KHÁI NIỆM KHOA HỌC VÀ NGHIÊN CỨU KHOA HỌC 1
1.1. Khoa học 1
1.2. Nghiên cứu khoa học 1
1.2.1. Khái niệm 1
1.2.2. Các bước nghiên cứu 1
Chương 2: VẤN ĐỀ KHOA HỌC VÀ CÁC PHƯƠNG PHÁP GIẢI QUYẾT 2
2.1 Vấn đề khoa học 2
2.2 Phân loại 2
2.3 Các tình huống vấn đề 2
2.4 Các phương pháp phát hiện vấn đề khoa học 3
Chương 3: BỐN MƯƠI THỦ THUẬT TRONG PHÁT MINH SÁNG CHẾ 3
3.1 Mở đầu 3
3.2 Bốn mươi thủ thuật 3
3.3 Ví dụ áp dụng một số thủ thuật vào vấn đề tin học 5
3.3.1. Nguyên tắc kết hợp 5
3.3.2. Nguyên tắc dự phòng 5
3.3.3. Nguyên tắc tác động theo chu kỳ 5
3.3.4. Nguyên tắc sao chép 6
3.3.5. Nguyên tắc rẻ thay đắt 6
3.3.6. Nguyên tắc thay đổi màu sắc 7
3.3.7. Nguyên tắc sử dụng trung gian 7
3.3.8. Nguyên tắc phân nhỏ 8
3.3.9. Nguyên tắc sử dụng kết cấu khí và lỏng 8
3.3.10. Nguyên tắc quan hệ phản hồi 8
3.3.11. Nguyên tắc “chứa trong” 9
3.3.12. Nguyên tắc vượt nhanh 9
Chương 4 : ÁP DỤNG CÁC NGUYÊN LÝ SÁNG TẠO TRONG LẬP TRÌNH
TIN HỌC 10
4.1 Lịch sử của các phương pháp lập trình máy tính 10
4.1.1 Lập trình tuyến tính 10
4.1.2 Lập trình cấu trúc 10
4.1.3 Lập trình hướng đối tượng OOP 12
4.2 Sự mở rộng ngôn ngữ C++ 14
4.2.1 Lịch sử phát triển của C++ 14
4.2.2 Các mở rộng của C++ 14
Chương 5: KẾT LUẬN 15
TÀI LIỆU THAM KHẢO 15
1
Chương 1: KHÁI NIỆM KHOA HỌC VÀ
NGHIÊN CỨU KHOA HỌC
1.1. Khoa học
Khoa học là quá trình nghiên cứu nhằm khám phá ra những kiến thức
mới, học thuyết mới về tự nhiên và xã hội cái mà có thể thay thế dần những cái
cũ, cái không còn phù hợp. Do dó, khoa học bao gồm một hệ thống tri thức về
qui luật của vật chất và sự vận động của vật chất, những qui luật của tự nhiên,
xã hội, và tư duy. Hệ thống tri thức này hình thành trong lịch sử và không
ngừng phát triển trên cơ sở thực tiễn xã hội. Phân biệt ra hai hệ thống tri thức
là tri thức kinh nghiệm và tri thức khoa học.
1.2. Nghiên cứu khoa học
1.2.1. Khái niệm
Nghiên cứu khoa học là một họat động tìm kiếm, xem xét, điều tra, hoặc
thử nghiệm. Dựa trên những số liệu, tài liệu, kiến thức đạt được từ các thí
nghiệm NCKH để phát hiện ra những cái mới về bản chất sự vật, về thế
giới tự nhiên và xã hội, và để sáng tạo phương pháp và phương tiện kỹ
thuật mới cao hơn, giá trị hơn. Con người muốn làm NCKH phải có kiến
thức nhất định về lĩnh vực nghiên cứu và cái chính là phải rèn luyện cách
làm việc tự lực, có phương pháp từ lúc ngồi trên ghế nhà trường.
1.2.2. Các bước nghiên cứu
Gồm 7 bước:
1. Xác lập vấn đề nghiên cứu
2. Giai đoạn chuẩn bị nghiên cứu
3. Lựa chọn nghiên cứu thông tin
4. Xây dựng giả thuyết, lựa chọn phương pháp và lập kế hoạch
5. Hoàn tất nghiên cứu
2
6. Viết báo cáo hoàn tất công trình
7. Giai đoạn kết thúc
Chương 2: VẤN ĐỀ KHOA HỌC VÀ CÁC
PHƯƠNG PHÁP GIẢI QUYẾT
2.1 Vấn đề khoa học
Vấn đề khoa học cũng được gọi là vấn đề nghiên cứu hoặc câu hỏi
nghiên cứu là câu hỏi được đặt ra khi người nghiên cứu đứng trước mâu thuẫn
giữa tính hạn chế của tri thức khoa học hiện có với yêu cầu phát triển tri thức
đó ở trình độ cao hơn.
2.2 Phân loại
Nghiên cứu khoa học luôn tồn tại hai vấn đề :
Vấn đề về bản chất sự vật đang tìm kiếm.
Vấn đề về phương pháp nghiên cứu để làm sáng tỏ về lý thuyết và
thực tiễn những vấn đề thuộc lớp thứ nhất.
2.3 Các tình huống vấn đề
Có vấn đề
Không có vấn
đ
ề
Gi
ả vấn đề
Có nghiên cứu
Không có nghiên
c
ứu
Không có v
ấn đề
Nảy sinh vấn đề
khác
Không có Nghiên
Nghiên cứu theo
m
ột h
ư
ớng khác
3
2.4 Các phương pháp phát hiện vấn đề khoa học
Có 6 phương pháp:
1. Tìm những kẻ hở, phát hiện những vấn đề mới
2. Tìm những bất đồng
3. Nghĩ ngược lại quan niệm thông thường
4. Quan sát những vướng mắc trong thực tiễn
5. Lắng nghe lời kêu ca phàn nàn
6. Cảm hứng : những câu hỏi bất chợt xuất hiện khi quan sát sự kiện
nào đó.
Chương 3: BỐN MƯƠI THỦ THUẬT TRONG
PHÁT MINH SÁNG CHẾ
3.1 Mở đầu
Trong hầu hết các lĩnh vực trong đời sống, việc giải quyết thành công các
vấn đề sẽ đều được rút ra nhiều kinh nghiệm, hay còn gọi là bí quyết, mẹo.
Nhờ những kinh nghiệm này mà những vấn đề phát sinh sau trong cùng một
lĩnh vực và thậm chí là ngoài lĩnh vực đó có thể được con người giải quyết
nhanh hơn và hiệu quả hơn. Những kinh nghiệm, bí quyết hay mẹo như vậy
được gọi là thủ thuật sáng tạo.
3.2 Bốn mươi thủ thuật
Dựa trên việc phân tích hơn 40,000 bản mô tả sáng chế thuộc những lĩnh
vực kỹ thuật khác nhau, G.S. Altshuller đã đúc kết ra bốn mươi thủ thuật sáng
tạo cơ bản được trình bày sau:
1. Nguyên lý phân nhỏ
2. Nguyên lý “tách riêng”
3. Nguyên lý phẩm chất cục bộ
4
4. Nguyên lý phản đối xứng
5. Nguyên lý kết hợp
6. Nguyên lý vạn năng
7. Nguyên lý chứa trong
8. Nguyên lý phản trọng lượng
9. Nguyên lý gây ứng suất sơ bộ
10. Nguyên lý thực hiện sơ bộ
11. Nguyên lý dự phòng
12. Nguyên lý đẳng thế
13. Nguyên lý đảo ngược
14. Nguyên lý cầu (tròn) hóa
15. Nguyên lý năng động
16. Nguyên lý tác động bộ phận và dư thừa
17. Nguyên lý bộ xung chiều khác
18. Sự dao động cơ học
19. Nguyên lý tác đông theo chu kỳ
20. Nguyên lý tác đông liên tục hữu hiệu
21. Nguyên lý vượt nhanh
22. Nguyên lý chuyển hại thành thắng
23. Nguyên lý quan hệ phản hồi
24. Nguyên lý sử dụng trung gian
25. Nguyên lý tự phục vụ
26. Nguyên lý sao chép
27. Nguyên lý rẻ thay cho đắt
28. Nguyên lý thay thế sơ đồ cơ học
29. Nguyên lý sử dụng các kết cấu thủy và khí
30. Sử dụng bao mềm dẻo và mềm mỏng
31. Sử dụng vật liệu nhiều lỗ
32. Nguyên lý đổi màu
33. Nguyên lý đồng nhất
34. Nguyên lý loại bỏ và tái sinh từng phần
5
35. Đổi các thông số hóa lý của đối tượng
36. Sử dụng chuyển pha
37. Sử dụng nở nhiệt
38. Sử dụng các chất oxy hóa
39. Sử dụng môi trường trơ
40. Sử dụng vật liệu tổng hợp (composit)
3.3 Ví dụ áp dụng một số thủ thuật vào vấn đề tin học
3.3.1. Nguyên tắc kết hợp
Nội dung của nguyên tắc như sau:
Kết hợp các đối tượng đồng nhất hoặc các đối tượng dùng cho
các hoạt động kế cận
Kết hợp về mặt thời gian các hoạt động đồng nhất hoặc kế cận
Ví dụ:
- Một chương trình giải toán tam giác đựa vào mạng tính toán sẽ kết
hợp C# và Maple, trong đó dùng C# để viết giao diện chương trình,
Maple để tính toán.
3.3.2. Nguyên tắc dự phòng
Nội dung của nguyên tắc như sau:
Bù đắp độ tin cậy không lớn của đối tượng bằng cách chuẩn bị
trước các phương tiện báo động, ứng cứu, an toàn.
Ví dụ:
- Windows sử dụng Recyle Bin để lưu tạm những file đã bị xóa (chỉ
Delete) trong một thời gian, để người dùng có thể khôi phục lại khi
cần thiết.
3.3.3. Nguyên tắc tác động theo chu kỳ
Nội dung của nguyên tắc như sau:
Chuyển tác động liên tục thành tác động theo chu kỳ(xung)
Nếu đã có tác động theo chu kỳ,hãy thay đổi chu kỳ.
6
Sử dụng khoảng thời gian giữa các xung để thực hiện tác động
khác
Ví dụ:
- Các phần mềm trên máy tính đa số đều sử dụng nguyên tắc này. Có
thể lấy một số phần mềm ứng dụng phổ biến như các chương trình
virus đều có thể lập lình cho quá trình update dữ liệu. Hay ngay cả
trong window cũng có quá trình update theo chu kỳ.
3.3.4. Nguyên tắc sao chép
Nội dung của nguyên tắc như sau:
Thay vì sử dụng những cái không được phép, phức tạp, đắt tiền,
không tiện lợi hoặc dễ vở, sử dụng bản sao
Thay thế đối tượng hoặc hệ các đối tượng bằng bản sao quang
học (ảnh, hình vẽ) với các tỷ lệ phóng to, thu nhỏ cần thiết
Nếu không thể sử dụng bản sao quang học ở vùng khả kiến(vùng
ánh sáng nhìn thấy được bằng mắt thường),chuyển sang sử dụng
bản sao hồng ngoại hoặc tử ngoại
Ví dụ:
- Trong hệ điều hành Window,ta thấy các đối tượng đều có tác vụ
copy.Tác vụ này có chức năng như tạo ra một bản sao cho đối tượng
giống y hệt đối tượng tạo ra nó. Vì thế khi đối tượng gốc bị mất thì
luôn sẵn có đối tượng copy thay thế.Trường hợp này vừa là thể hiện
của nguyên tắc sao chép,vừa là thể hiện của nguyên tắc dự phòng.
3.3.5. Nguyên tắc rẻ thay đắt
Nội dung của nguyên tắc này như sau:
Thay đổi đối tượng đắt tiền bằng các đối tượng rẻ có phẩm chất
kém hơn
Ví dụ:
- Sử dụng Cloud Computing thay vì dùng các phần mềm có bản quyền
rất tốn kém.
7
- Các chương trình được xây dựng bằng các thành phần, ngôn ngữ lập
trình miễn phí như Apache Server, MySQL, Squid, Java chạy trên
hệ điều hành mã nguồn mở Redhat. Các thành phần này tuy khó sử
dụng nhưng đều là các thành phần được cung cấp miển phí, giúp tiết
kiệm cho doanh nghiệp một khoảng lớn chi phí đầu tư so với sử
dụng các thành phần, phần mềm, ngôn ngữ lập trình có bản quyền.
3.3.6. Nguyên tắc thay đổi màu sắc
Nội dung của nguyên tắc này như sau:
Thay đổi màu sắc của đối tượng hay môi trường bên ngoài
Thay đổi độ trong suốt của đối tượng hay môi trường bên ngoài
Để có thể quan sát được những đối tượng hoặc những quá trình,
hãy sử dụng các chất phụ gia màu, huỳnh quang
Nếu các chất phụ gia đó đã được sử dụng, hãy dùng các nguyên tử
đánh dấu
Sử dụng các hình vẽ, ký hiệu thích hợp
Ví dụ:
- Màu sắc có ý nghĩa rất lớn trong việc thu hút sự chú ý của con người.
Biết được đều này các biên bản của hệ điều hành Window càng cải
thiện hơn về giao diện người dùng.
3.3.7. Nguyên tắc sử dụng trung gian
Nội dung của nguyên tắc này như sau:
Sử dụng đối tượng trung gian, chuyển tiếp để mang, truyền tác
động
Tạm thời gắn đối tượng cho đối tượng cho trước với các đối tượng
khác, dễ tách rời sau đó
Ví dụ:
- Các máy tình trong một mạng LAN được kết nối với nhau thông qua
các sợi dây cáp mạng
- Việc truyền hình ảnh từ máy tính lên màn hình ti vi được thực hiện
bởi việc kết nới dây cáp đầu HDMI. Nhưng với những máy tính
8
không có cổng HDMI, từ ta sử dụng 2 dây cáp trung gian đầu VGA-
DVI nối với đây cáp đầu DVI-HDMI, sau đó nối vào dây đầu
HDMI.
3.3.8. Nguyên tắc phân nhỏ
Nội dung của nguyên tắc này như sau:
Chia đối tượng thành các phần độc lập
Làm đối tượng trở nên tháo lắp được
Tăng mức độ phân nhỏ của đối tượng
Ví dụ:
- Phần mềm download Internet Download Manger là một trình
download có tốc độ khá cao. Các file download sẽ được chia nhỏ ra
từng phần và tiến hành download song song cùng một lúc.
3.3.9. Nguyên tắc sử dụng kết cấu khí và lỏng
Nội dung của nguyên tắc này như sau:
Thay cho các phần đối tượng ở thể rắn,sử dụng các chất khí và
lỏng: các kết cấu nạp khí, nạp chất lỏng, đệm không khí, thủy
tĩnh, thủy phản lực.
Ví dụ:
- Trước kia người ta thường sử dụng màn hình gương.Ngày nay người
ta đã sản xuất được loại màn hình tinh thể lỏng. Màn hình tinh thể
lỏng (liquid crystal display, LCD) là loại thiết bị hiển thị cấu tạo bởi
các tế bào (các điểm ảnh) chứa tinh thể lỏng có khả năng thay đổi
tính phân cực của ánh sáng và do đó thay đổi cường độ ánh sáng
truyền qua khi kết hợp với các kính lọc phân cực. Chúng có ưu điểm
là phẳng, cho hình ảnh sáng, chân thật và tiết kiệm năng lượng.
3.3.10. Nguyên tắc quan hệ phản hồi
Nội dung của nguyên tắc này như sau:
Thiết lập quan hệ phản hồi
Nếu đã có quan hệ phản hồi, hãy thay đổi (hoàn thiện) nó
9
Ví dụ:
- Khi đăng ký làm thành viên của một trang web, người dùng bắt buộc
phải xác nhận lại thông tin bằng cách nhấp vào đường dẫn được gởi
trực tiếp đến mail của người dùng từ trang web đó. Sau khi đã xác
nhận thì người dùng có truy cập như là thành viên chính thức vào
trang web đó.
- Hệ điều hành giao tiếp với ngừơi sử dụng nên Windows phải có khả
năng phản hồi lại yêu cầu của người dùng thông qua giao diện đồ
hoạ thân thiện với người dùng và dể sự dụng. Sau khi phản hồi
Windows chở hành động tiếp theo của người dùng và dựa vào đó để
thực thi các process tiếp theo. Như vậy quá trình xử lý tiệp tục cho
đến khi mọi nhu cầu của người sử dụng được đáp ứng.
3.3.11. Nguyên tắc “chứa trong”
Nội dung của nguyên tắc này như sau:
Một đối tượng chứa bên trong nó một đối tượng khác và đối
tượng đó lại chứa đối tượng thứ ba…
Một đối tượng chuyển động xuyên suốt bên trong đối tượng khác
Ví dụ:
- Một bộ vi xử lý chứa trong nó hai lõi khác nhau có thể hoạt động
độc lập xử lý các tiền trình khác nhau hay cùng xử lý một tiến trình.
Đây cũng là đặt điểm nổi bật nhất của công nghệ bộ vi xử lý đa
nhân, xử lý song song các tiến trình hoặc đơn xử lý như vậy giúp
tăng hiệu quả của bộ vi xử lý
3.3.12. Nguyên tắc vượt nhanh
Nội dung của nguyên tắc này như sau:
Vượt qua giai đoạn có hai hoặc nguy hiểm với vận tốc lớn
Vượt nhanh để có được hiệu ứng cần thiết
Ví dụ:
10
- Khi mà chúng ta lựa chọn định dạng ổ đĩa, thì có một sự lựa chọn là
Quick format giúp chúng ta định dạng nhanh hơn.
- Phần mềm diệt virus nổi tiếng hiện nay thông thường có hai cơ chế
Quick Scan hay Full Scan.
Chương 4 : ÁP DỤNG CÁC NGUYÊN LÝ SÁNG
TẠO TRONG LẬP TRÌNH TIN HỌC
4.1 Lịch sử của các phương pháp lập trình máy tính
4.1.1 Lập trình tuyến tính
Máy tính đầu tiên được lập trình bằng mã nhị phân, sử dụng các công tắc
cơ khí để nạp chương trình. Sau này, cùng với sự phát triển của máy tính các
thiết bị lưu trữ có dung lượng lớn nên các ngôn ngữ lập trình cấp cao đầu tiên
đã được ra đời và đưa vào sử dụng. Ngôn ngữ lập trình này sử dụng các câu
lệnh được viết bằng tiếng Anh và sau đó được biên dịch ra ngôn ngữ máy.
Các ngôn ngữ lập trình cấp cao đầu tiên dùng để thiết kế chương trình
tính toán tương đối đơn giản nên khối lượng chương trình tương đối nhỏ. Tuy
nhiên, khi khả năng của máy tính tăng lên, và yêu cầu khả năng triển khai
chương trình phức tạp hơn thì ngôn ngữ này không còn thích hợp nữa. Đơn
giản vì đây là lập trình tuyến tính, nên chương trình khi thực hiện sẽ chạy từ
trên xuống, vì vậy nếu như ta muốn sử dụng lại một số dòng lệnh đã được viết
ở trên, ta chỉ có một cách duy nhất là chép lặp lại chúng. Việc này làm cho
khối lượng chương trình lớn lên, dài dòng và logic của chương trình khó hiểu
hơn. Thêm vào đó dữ liệu của chương trình đều là dữ liệu toàn cục, nghĩa là
chúng có thể bị thay đổi bắt cứ ở chỗ nào của chương trình. Dẫn đến việc kiểm
soát chương trình trở nên phức tạp và mất thời gian.
4.1.2 Lập trình cấu trúc
11
Do nhiều hạn chế của ngôn ngữ lập tình tuyến tính như đã nêu trên, ngôn
ngữ lập trình có cấu trúc đã ra đời vào những năm 1960- 1970. Các chương
trình có cấu trúc được tổ chức theo các công việc mà chúng thực hiện. Một số
ngôn ngữ lập trình cấu trúc như Pascal, C, Foxpro.
Sự phát triển này đã vận dụng một số phương pháp trong sáng tạo như
sau:
Nguyên tắc phân nhỏ
Về bản chất, chương trình chia nhỏ thành các chương trình con riêng
lẽ (còn được gọi là hàm hay thủ tục). Mỗi hàm này sẽ thực hiện các
công việc rời rạc trong một quá trình phức tạp hơn. Việc phân nhỏ này
sẽ làm cho chương trình dễ quản lý hơn.
Nguyên tắc tách khỏi
Mục tiêu của lập trình có cấu trúc là làm sao cho việc triển khao các
phần mềm dễ dàng hơn đối với các lập trình viên mà vẫn cải thiện
được tính tin cậy và dễ bảo quản chương trình. Một chương trình có
cấu trúc hình thành bằng cách tách các chức năng cơ bản của chương
trình thành các mảnh nhỏ mà sau đó trở thành hàm.
Nguyên tắc cục bộ
Dữ liệu trong từng hàm là cục bộ có phạm vi chỉ trong hàm đó, nên có
hàm đó sử dụng và không phụ thuộc vào các hàm khác. Do vậy việc
tìm kiếm và thay đổi trở nên dễ dàng và dễ kiểm soát hơn. Việc này
cũng làm giảm khả năng ảnh hưởng của hàm này đến hàm khác.
Nguyên tắc tự phục vụ
Mỗi hàm làm một nhiệm vụ riêng, nên việc khai báo biến trong hàm
chỉ sẽ phục vụ cho riêng hàm đó, và bên ngoài hàm không thể truy
xuất đến được.
Nguyên tắc kết hợp
Thông tin được chuyển giao giữ các hàm thông qua các biến tham số.
Như vậy hàm cũng giống như là một chương trình con được đặt chung
với nhau để xây dựng nên một ứng dụng.
Nguyên tắc trung gian
12
Trong lập trình cấu trúc, chương trình được chia ra nhiều hàm, và mỗi
hàm lại cố thể sử dụng lại kết quả của hàm khác để tích toán trong
thân hàm đó.
Nguyên tắc linh động
Trong một chương trình tin học, một hàm có thể được sử dụng nhiều
lần. Với lập trình có cấu trúc, thay vì ta phải chép lại đoạn mã của hàm
như lập trình tuyến tính, ở đây ta chỉ cần gọi lại tên hàm.
Ngày nay, lập trình có cấu trúc được đều được áp dụng rộng rãi trong mọi
ngôn ngữ lập trình. Cách tổ chức tốt hơn này có khả năng quản lý logic của cấu
trúc chương trình, làm cho việc triển khai và bảo dưỡng chương trình nhanh
hơn, hữu hiệu và hiệu quả hơn.
Bên cạnh những cải thiện được nên trên, lập trình cấu trúc còn tồn tại
nhiều nhược điểm như sau:
Khi độ phức tạp của chương trình tăng lên, sự phụ thuộc của nó vào
các kiểu dữ liệu cơ bản mà nó xử lý cũng tăng theo. Vấn đề trở nên rõ
ràng là cấu trúc dữ liệu trong chương trình qua trọng chằng kém các
phép toán thực hiện trên chúng. Điều này càng trở nên phức tạp hơn
khi cấu trúc chương trình tăng, các kiểu dữ liệu được xử lý trong nhiều
hàm khác nhau bên trong một chương trình có cấu trúc. Do vậy các dữ
liệu này cần phải được thay đổi ở mọi nơi có thao tác tác động trên
chúng. Đây là một công việc hoàn toàn tốn thời gian và kém hiệu quả
đối với một chương trình có hàng ngàn dòng lệnh.
Khi làm việc theo nhóm, việc sửa đổi một dữ liệu mà một lập trình
viên tạo ra sẽ làm ảnh hưởng đến công việc của tất cả các thành viên
còn lại.
4.1.3 Lập trình hướng đối tượng OOP
Lập trình hướng đối tượng được xây dựng trên nền tảng của khái niệm lập
trình có cấu trúc và sự trừu tượng hóa dữ liệu. Sự thay đổi căn bản của lập trình
OOP là chương trình được thiết kế xoay quanh dữ liệu mà chúng ta có thể làm
việc trên đó hơn là theo bản thân chức năng của chương trình. Điều này hoàn
toàn tự nhiên khi chúng ta hiểu rằng mục tiêu của chương trình là xử lý dữ liệu.
13
Lập trình hướng đối tượng liên kết dữ liệu với thao tác. Một số ngôn ngữ lập
trình hướng đối tượng như Eiffel, Clos, Loop, Flavors, Object Pascal, Object
C, C++, Delphi, Java.
Sự phát triển này đã vận dụng một số phương pháp trong sáng tạo như
sau:
Nguyên tắc đồng nhất:
Thể hiện ở tính đóng gói: đây là cơ chế ràng buộc dữ liệu và thao tác
trên dữ liệu đó thành một thể thống nhất, tránh được các tác động bất
ngờ từ bên ngoài. Thể thống nhất này gọi là đối tượng.
Nguyên tắc chứa trong:
- Thể hiện ở tính đóng gói: Đối tượng là sự kết hợp dữ liệu và thao tác
trên dữ liệu đó thành một thể thống nhất.Dữ liệu thể hiện tình trạng
hay thuộc tính của đối tương, hành vi hay phương thức để thực hiện
một số nhiệm vụ nhất định, nhằm thông báo hay làm thay đổi thuộc
tính của chính nó.
- Thể hiện qua tính kế thừa trong OOP: tính kế thừa là sự cho phép
định nghĩa các lớp mới từ các lớp đã có (tính kế thừa này còn thuộc
nguyên tắc sao chép)
Nguyên tắc vạn năng:
- Thể hiện qua tính đa hình trong ngôn ngữ lập trình OOP: tính đa
hìnhlà khả năng cư xử hoàn toàn khác nhau của những xử lý có dạng
gần như tương tự nhau. Tính đa hình thể hiện ở hai dạng:
+ Hàm nạp chồng (overloading function): là những hàm có cùng tên,
chỉ khác nhau ở danh sách tham số nhưng xử lý khác nhau.
+ Liên kết động (dynamic binding): là việc gọi thực hiện phương
thức của đối tượng lớp kế thừa thông qua interface của lớp cơ sở.
Phương thức thật sự được gọi thực hiện phụ thuộc vào đối tượng của
lớp kế thừa nào đang được bao bọc bởi interface của lớp cơ sở.
- Hàm Template: khi có nhiều hàm khác nhau có cách thực hiện giống
nhau trên các kiểu dữ liệu khác nhau thì ta chỉ cần viết thành một
hàm (gọi là hàm template) trên kiểu dữ liệu tổng quát.
14
Nguyên tắc thay thế sơ đồ cơ học:
Lập trình OOP gọi các phương thức thay vì gọi hàm hoặc thủ tục như
phương pháp lập trình cấu trúc.
4.2 Sự mở rộng ngôn ngữ C++
4.2.1 Lịch sử phát triển của C++
Vào những năm 1980, người dùng biết đến C++ với tên gọi “C with
Classes” được mô tả trong bài báo của Bjarne Stroustrup với nhan đề
“Classes: An Abstract Data Type Facility for the C Language” và “Adding
Classes to C: An Exercise in Language Evolution”. Trong công trình này tác
giả đã đề xuất khái niệm lớp, bổ sung việc kiểm tra kiểu tham số của hàm, các
chuyển đổi kiểu và một số mở rộng khác vào ngôn ngữ C. Bjarne Stroustrup
nghiên cứu mở rộng ngôn ngữ C nhằm đạt đến một ngôn ngữ mô phỏng
(simulation laguage) với những tính năng hướng đối tượng.
Trong năm 1983, 1984, ngôn ngữ “C with classes” được thiết kế lại, mở
rộng hơn rồi một trình biên dịch ra đời. Và chính từ đó, xuất hiện C++. Bjarne
Stroustrup mô tả ngôn ngữ C++ lần đầu tiên trong bài báo có nhan đề “Data
Astraction in C”. Sau một vài hiệu chỉnh, C++ được công bố rộng rãi trong
quyển “The C++ Programming Languge” của Bjarne Stroustrup xuất hiện đánh
dấu sự hiện diện thực sự của C++, người lập trình chuyên nghiệp từ đây đã có
một ngôn ngữ đủ mạnh cho các dự án thực tiễn của mình.
4.2.2 Các mở rộng của C++
Về bản chất, C++ giống như C nhưng bổ sung thêm một số mở rộng quan
trọng, đặc biệt là ý tưởng về đối tượng. Sự phát triển này đã vận dụng một số
phương pháp trong sáng tạo như sau:
Nguyên tắc đồng nhất
Một số kiểu dữ liệu trong ngôn ngữ C++ như struct, uinon định định
nghĩa cách khai báo mới, nhưng để tương thích với C, C++ vẫn chấp
nhận cú pháp cũ.
Nguyên tắc phân hủy hoặc tái sinh từng phần
15
- Ngôn ngữ C dùng hàm malloc để khai báo vùng nhớ và dùng free để
giải phóng vùng nhớ đó, nhưng C++ dùng toán tử new để khai báo
và delete để giải phóng vùng nhớ. Cách khai báo mới trong C++ đơn
giản và rõ ràng và để sử dụng hơn so với trong C.
- C++ dùng biến nhập xuất cout, cin kết hợp với toán tử trích <<, hay
toán tử chèn >>thay vì dùng hàm prinf, scanf như trong C
Nguyên tắc linh động:
Trong C++, ta có thể khai báo các biến một cách linh hoạt ở bất kỳ vị
trí nào trong chương trình trước khi dùng đến nó, nhưng trong C đòi
hỏi các biến sử dụng trong một phạm vi nào đó thì phải được khai báo
ngay đầu phạm vi đó.
Chương 5: KẾT LUẬN
Việc ứng dụng phương pháp sáng tạo khoa học vào trong tin học đã góp
phần tạo nên sự phát triển vũ bão của ngành công nghệ thông tin ngày nay. Sự
phát triển này bắt đầu từ việc cải thiện ngôn ngữ lập trình cũng như phương
pháp lập trình, và đó chính là công cụ hữu hiệu giúp cho lập trình viêndễ dàng
sử dụng và tạo ra công trình khoa học hay những phần mềm phục vụ trực tiếp
nhu cầu thực tiễn của con người.
TÀI LIỆU THAM KHẢO
[1] Hoàng Văn Kiếm, Hoàng kiếm, Slide Phương pháp nghiên cứu khoa học trong
tin học
[2] Phan Dũng, Các thủ thuật (nguyên lý) sáng tạo cơ bản phần một, Trung tâm
sáng tạo khoa học – kỹ thuật (TSK) TpHCM,2007
[3] Vũ Thanh Hiền, Giáo trình lập trình hướng đối tượng , Nhà xuất bản Đại học
Quốc Gia Tp.HCM 2006