Đại Học Quốc Gia TP HCM
Trường ĐH Công Nghệ Thông Tin
2012
PHƯƠNG PHÁP
NGHIÊN CỨU KHOA HỌC
TRONG TIN HỌC
Các nguyên tắc sáng tạo được áp
dụng trong Java
Giảng viên: GS.TSKH. Hoàng Văn Kiếm
HVTH: Nguyễn Hoàng Vũ
MSHV: CH1101157
NỘI DUNG
I. Tổng quan về phương pháp nghiên cứu khoa học
1. Giới thiệu phương pháp luận sáng tạo khoa học
2. Phương Pháp Luận Sáng Tạo Trong Tin Học
3. Giới thiệu 40 Nguyên tắc sáng tạo trong khoa học kỹ thuật
II. Tổng quan về Java
1. Giới thiệu
2. Sơ lược về Java
a. Nền tảng được thiết lập cho Java
b. Ngôn ngữ lập trình Java
c. Triết lý của Java
d. Một số đặc điểm của Java
e. Ứng dụng
f. Một số khái niệm trên Java
III. Các nguyên tắc sáng tạo được áp dụng trong Java
1. Nguyên tắc phân nhỏ
2. Nguyên tắc tách khỏi
3. Nguyên tắc phẩm chất cục bộ
4. Nguyên tắc kết hợp
5. Nguyên tắc vạn năng
Ðối với một công ty hay tổ chức, tài nguyên quan trọng nhất chính là nguồn nhân
lực, tức là những người làm việc cho công ty, tổ chức. Họ gồm các thợ bảo trì, những
người bán hàng, các công nhân trong dây chuyền sản xuất, những người đánh máy và
các cán bộ quản lý mọi cấp bậc. Nguồn nhân lực của công ty làm cho các tài nguyên
khác hoạt động, mang lại hiệu quả cao. Thiếu nhân sự tốt, một công ty, tổ chức, dù được
trang bị máy móc hoàn hảo nhất, được tài trợ tốt nhất, sẽ hoạt động kém hiệu quả.
Vì vậy, mỗi người trong mỗi cơ cấu tổ chức cần học phương pháp luận (các thủ
thuật cơ bản, các phương pháp, lý thuyết) về tư duy sáng tạo. Ðiều này làm cho cơ cấu
tổ chức của bạn mạnh lên rất nhiều. Trong mỗi cơ cấu tổ chức, càng nhiều người học
phương pháp luận về tư duy sáng tạo, tổ chức hoạt động càng có hiệu quả.
2. Phương Pháp Luận Sáng Tạo Trong Tin Học
Tin học là một ngành hiện đại, từ khi có tin học cuộc sống của con nguời ngày càng
được nâng cao, thế giới biến đổi nhanh “chóng mặt”. Ngành học đòi hỏi sự đầu tư tư
duy, chất xám, một sản phẩm tin học được đánh giá cao là sản phẩm có “hàm lượng” tư
duy và chất xám cao. Một công ty thuộc lĩnh vực tin học không cần phải có diện tích to
lớn, cơ sở hạ tầng hoành tráng, nguồn nhân lực đông đảo, mà cần chủ yếu là tư duy và
chất xám, cần sự sáng tạo ra cái mới, cái khác hữu dụng, tốt hơn sản phẩm cũ. Các sản
phẩm tin học không cần đầu tư nhiều thiết bị cho sản phẩm, thay vào đó đầu tư về chất
xám càng nhiều thì sản phẩm càng được người dùng đón tiếp, sử dụng trên thị trường.
3. Giới thiệu 40 Nguyên tắc sáng tạo trong khoa học kỹ thuật
(1) Nguyên tắc phân nhỏ
- 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ỏ đối tượng.
(2) Nguyên tắc “tách khỏi”
- Tách phần gây “phiền phức” ( tính chất “phiền phức” ) hay ngược lại
tách phần duy nhất “cần thiết” ( tính chất “cần thiết” ) ra khỏi đối
tượng.
(3) Nguyên tắc phẩm chất cục bộ
- Chuyển đối tượng ( hay môi trường bên ngoài, tác động bên ngoài)
- Cần sắp xếp đối tượng trước, sao cho chúng có thể hoạt động từ vị trí
thuận lợi nhất, không mất thời gian dịch chuyển.
(11)Nguyên tắc dự phòng
- 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.
(12) Nguyên tắc đẳng thế
- Thay đổi điều kiện làm việc để không phải nâng lên hay hạ xuống các
đối tượng.
(13) Nguyên tắc đảo ngược
- Thay vì hành động như yêu cầu bài toán, hành động ngược lại ( ví dụ,
không làm nóng mà làm lạnh đối tượng)
- Làm phần chuyển động của đối tượng ( hay môi trường bên ngoài )
thành đứng yên và ngược lại, phần đứng yên thành chuyển động.
(14) Nguyên tắc cầu ( tròn ) hoá
- Chuyển những phần thẳng của đối tượng thành cong, mặt phẳng
thành mặt cầu, kết cấu hình hộp thành kết cấu hình cầu.
- Sử dụng các con lăn, viên bi, vòng xoắn.
- Chuyển sang chuyển động quay, sử dụng lực ly tâm.
(15) Nguyên tắc linh động
- Cần thay đổi các đặt trưng của đối tượng hay môi trường bên ngoài
sao cho chúng tối ưu trong từng giai đoạn làm việc.
- Phân chia đối tượng thành từng phần, có khả năng dịch chuyển với
nhau.
(16) Nguyên tắc giải “thiếu” hoặc “thừa”
- Nếu như khó nhận được 100% hiệu quả cần thiết, nên nhận ít hơn
hoặc nhiều hơn “một chút”. Lúc đó bài toán có thể trở nên đơn giản
hơn và dễ giải hơn.
(17) Nguyên tắc chuyển sang chiều khác
- Những khó khăn do chuyển động ( hay sắp xếp) đối tượng theo
đường (một chiều) sẽ được khắc phục nếu cho đối tượng khả năng di
- Khắc phục tác nhân có hại bằng cách kết hợp nó với tác nhân có hại
khác.
- Tăng cường tác nhân có hại đến mức nó không còn có hại nữa.
(23) Nguyên tắc quan hệ phản hồi
- Thiết lập quan hệ phản hồi
- Nếu đã có quan hệ phản hồi, hãy thay đổi nó.
(24) Nguyên tắc sử dụng trung gian
- Sử dụng đối tượng trung gian, chuyển tiếp.
(25) Nguyên tắc tự phục vụ
- đối tượng phải tự phục vụ bằng cách thực hiện các thao tác phụ trợ,
sửa chữa.
- Sử dụng phế liệu, chát thải, năng lượng dư.
(26) Nguyên tắc sao chép (copy)
- 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ệ cần thiết.
- Nếu không thể sử dụng bản sao quang học ở vùng biẻu kiến ( vùng
ánh sáng nhìn thấy được bằng mắt thường ), chuyển sang sử dụng các
bản sao hồng ngoại hoặc tử ngoại.
(27) Nguyên tắc “rẻ” thay cho “đắt”
- Thay thế đối tượng đắt tiền bằng bộ các đối tượng rẻ có chất lượng
kém hơn ( thí dụ như về tuổi thọ).
(28) Thay thế sơ đồ cơ học
- Thay thế sơ đồ cơ học bằng điện, quang, nhiệt, âm hoặc mùi vị.
- Sử dụng điện trường, từ trường và điện từ trường trong tương tác với
đối tượng .
- Chuyển các trường đứng yên sang chuyển động, các trường cố định
sang thay đổi theo thời gian, các trường đồng nhất sang có cấu trúc
nhất định .
- Thay đổi trạng thái đối tượng.
- Thay đổi nồng độ hay độ đậm đặc.
- Thay đổi độ dẻo
- Thay đổi nhiệt độ, thể tích.
(36) Sử dụng chuyển pha
- Sử dụng các hiện tượng nảy sinh trong quá trình chuyển pha như :
thay đổi thể tích, toả hay hấp thu nhiệt lượng…
(37) Sử dụng sự nở nhiệt
- Sử dụng sự nở ( hay co) nhiệt của các vật liệu.
- Nếu đã dùng sự nở nhiệt, sử dụng với vật liệu có các hệ số nở nhiệt
khác nhau.
(38) Sử dụng các chất oxy hoá mạnh
- Thay không khí thường bằng không khí giàu oxy.
- Thay không khí giàu oxy bằng chính oxy.
- Dùng các bức xạ ion hoá tác động lên không khí hoặc oxy.
- Thay oxy giàu ozon ( hoặc oxy bị ion hoá) bằng chính ozon.
(39) Thay đổi độ trơ
- Thay môi trường thông thường bằng môi trường trung hoà.
- Đưa thêm vào đối tượng các phần , các chất , phụ gia trung hoà.
- Thực hiện quá trình trong chân không.
(40) Sử dụng các vật liệu hợp thành ( composite )
- Chuyển từ các vật liệu đồng nhất sang sử dụng những vật liệu hợp
thành ( composite). Hay nói chung, sử dụng các vật liệu mới.
II. Tổng quan về Java
1. Giới thiệu
Java là một ngôn ngữ lập trình do công ty Sun Microsystems phát triển vào đầu thập
kỷ 1990. Khi thực hiện một dự án nghiên cứu của Sun các nhà khoa học phát hiện rằng
ngôn ngữ C++ không phù hợp và không đủ khả năng để đáp ứng nhu cầu của mình. Vì
vậy nhóm nghiên cứu này đã bắt tay vào việc xây dựng một ngôn ngữ lập trình mới
bằng cách tận dụng các ý tưởng tiên tiến của các ngôn ngữ lập trình hiện có. Người thiết
minh ra ngôn ngữ Java, chính thức ban hành bản Java Development Kit 1.0 vào năm
1996 hoàn toàn miễn phí. Java đã trải qua 3 bước phát triển quan trọng: Java 1.0 gắn
liền với bản JDK đầu tiên, Java 2 gắn với JDK 1.2 và Java 5 gắn với J2SDK 1.5
b. Ngôn ngữ lập trình Java
Ngôn ngữ lập trình Java là ngôn ngữ hướng đối tượng (tựa C++) do SUN đưa ra vào
giữa thập niên 90. Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch
mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên
dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime
environment) chạy. Bằng cách này, Java thường chạy nhanh hơn những ngôn ngữ lập
trình thông dịch khác như Python, Perl, PHP, và khả chuyển hơn các ngôn ngữ lập
trình biên dịch như C++. Không nên lẫn lộn Java với JavaScript, mặc dù 2 ngôn ngữ đó
giống tên và cùng loại cú pháp như C.
Ngày nay, đối với Java người ta không còn nhắc đến như là 1 ngôn ngữ lập trình mà
nhắc đến một công nghệ hay một nền tảng phát triển, nó bao gồm các bộ phận:
* Máy ảo Java: JVM
* Bộ công cụ phát triển: J2SDK
* Các đặc tả chi tiết kĩ thuật (specifications)
* Ngôn ngữ lập trình (programming language)
* Các công nghệ đi kèm như JSP, Servlet, EJB, JDBC, JNDI, JMX, RMI … và
framework như Struts, Spring, JSF, Hibernate, JavaFX
c. Triết lý của Java
Write Once, Run Anywhere
Tất cả các chương trình muốn thực thi được thì phải được biên dịch ra mã máy. Mã máy
của từng kiến trúc CPU của mỗi máy tính là khác nhau (tập lệnh mã máy của CPU Intel,
CPU Solarix, CPU Macintosh … là khác nhau), vì vậy trước đây một chương trình sau
khi được biên dịch xong chỉ có thể chạy được trên một kiến trúc CPU cụ thể nào đó.
Đối với CPU Intel chúng ta có thể chạy các hệ điều hành như Microsoft Windows,
Unix,Linux, OS/2, …
Chương trình thực thi được trên Windows được biên dịch dưới dạng file có đuôi .EXE
còn trên Linux thì được biên dịch dưới dạng file có đuôi .ELF, vì vậy trước đây một
tượng trong Java không có tính đa kế thừa (multi inheritance) như trong C++ mà
thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa. Vấn đề này sẽ
được bàn chi tiết trong phần sau
Hiểu mạng (network-savvy):
Java được lập ra để hoạt động trên mạng và có các thủ tục để có thể quản lý các giao
thức mạng như TCP/IP, FTP và HTTP. Nói cách khác, Java được xây dựng để thực
hiện hoàn toàn thích hợp trên Internet. Chương trình Java thậm chí có thể xâm nhập
vào các đối thượng khác thông qua Internet bằng cách sử dụng URL (địa chỉ Web)
để định vị chúng.
Mạnh mẽ (robust):
Khả năng mạnh phải phù hợp với thiết kế của ngôn ngữ, và hướng nó vào việc khắc
phục những hư hỏng bộ nhớ và đảm bảo tính toán vẹn dữ liệu. Ví dụ, Java có tính
năng "automatic garbage collection" (tự động thu gom rác) - có nghĩa là bộ nhớ
được giải phóng một cách tự động - nên lập trình viên không phải bận tâm về việc
quản lý bộ nhớ và nhờ đó ít có xu hướng làm những việc gây hỏng bộ nhớ.
An toàn (secure):
Khả năng hướng mạng của Java tự động đưa ra yêu cầu về an toàn. Đặc tính an toàn
của ngôn ngữ lập trình này bắt nguồn từ việc nó có những phần hạn chế được cài
sẵn nhằm đề phòng các chương trình Java thực hiện những chức năng như ghi vào ổ
cứng của người dùng hay cho phép virus từ mạng hoặc từ môi trường phân tán thâm
nhập vào.
Độc lập với cấu trúc (architecture neutral):
Đây là thuộc tính đặc sắc nhất của Java. Java được tạo ra với tiêu chí "Viết (code)
một lần, thực thi khắp nơi" ("Write Once, Run Anywhere" (WORA)). Tính năng
biên dịch một lần và chạy nhiều nền có thể đạt được nhờ just-in-time compiler
(JIT), chuyển mã bytecode của Java sang mã máy khi chương trình đang chạy.
Chương trình phần mềm viết bằng Java có thể chạy trên mọi nền tảng (platform)
khác nhau thông qua một môi trường thực thi với điều kiện có máy ảo java thích
hợp hỗ trợ nền tảng đó. Môi trường thực thi của Sun Microsystems hiện hỗ trợ Sun
Solaris, Linux, Mac OS, FreeBSD, Windows và nhiều hệ thống cài đặt trên các thiết
e. Ứng dụng
Ban đầu, Java chủ yếu dùng để phát triển các applet, các ứng dụng nhúng vào trình
duyệt, góp phần làm sinh động các trang web tĩnh vốn hết sức tẻ nhạt hồi dó. Tuy nhiên,
cùng với sự phát triển của công nghệ thông tin và nhu cầu của xã hội, Java applet đã
dần mất đi vị trí của nó và thay vào đó, các công ty, cộng đồng ủng hộ Java đã phát triển
nó theo một hướng khác. Hiện nay, công nghệ Java được chia làm ba bộ phận hỗ trợ
cho việc phát triển nhiều loại hình ứng dụng khác nhau cụ thể như:
J2SE (Java Standard Edition)Gồm các đặc tả, công cụ, API của nhân Java giúp phát
triển các ứng dụng trên desktop và định nghĩa các phần thuộc nhân của Java: platform
cho phát triển và thực thi các ứng dụng Java trên desktop và server, cũng như các thiết
bị nhúng, và môi trường thời gian thực.
J2EE (Java Enterprise Edition) Gồm các đặc tả, công cụ, API mở rộng J2SE để phát
triển các ứng dụng qui mô doanh nghiệp, chủ yếu để chạy trên máy chủ (server). Bộ
phận hay được nhắc đến nhất của công nghệ này là công nghệ Servlet/JSP: sử dụng
Java để làm các ứng dụng web.
J2ME (Java Micro Edition) Gồm các đặc tả, công cụ, API mở rộng để phát triển các
ứng dụng Java chạy trên điện thoại di động, thẻ thông minh, thiết bị điện tử cầm tay,
robo và những ứng dụng điện tử khác.
f. Một số khái niệm trên Java
Ban đầu, Java chủ yếu dùng để phát triển các applet, các ứng dụng nhúng vào trình
duyệt, góp phần làm sinh động các trang web tĩnh vốn hết sức tẻ nhạt hồi dó. Tuy nhiên,
cùng với sự phát triển của công nghệ thông tin và nhu cầu của xã hội, Java applet đã
dần mất đi vị trí của nó và thay vào đó, các công ty, cộng đồng ủng hộ Java đã phát triển
nó theo một hướng khác. Hiện nay, công nghệ Java được chia làm ba bộ phận hỗ trợ
cho việc phát triển nhiều loại hình ứng dụng khác nhau cụ thể như:
J2SE (Java Standard Edition)Gồm các đặc tả, công cụ, API của nhân Java giúp phát
triển các ứng dụng trên desktop và định nghĩa các phần thuộc nhân của Java: platform
cho phát triển và thực thi các ứng dụng Java trên desktop và server, cũng như các thiết
bị nhúng, và môi trường thời gian thực.
J2EE (Java Enterprise Edition) Gồm các đặc tả, công cụ, API mở rộng J2SE để phát
module execution engine.
File class của Java giúp Java thích hợp cho sự độc lập nền tảng và tính di động trên
mạng. Vai trò của nó trong sự độc lập nền tảng là phục vụ như là một kiểu file nhị phân
cho những chương trình Java. Trong bộ thông dịch Java, sau khi viết mã nguồn, nó
được dịch thành những bytecode, “ngôn ngữ máy” của máy ảo Java.
Java API là tập các thư viện runtime cung cấp một cách thức tiêu chuẩn để truy cập
những tài nguyên hệ thống của một máy tính.
Do Java là một hệ thống gồm nhiều thành phần như thế nên khả năng tháo lắp, di động
của nó rất tốt: Người sử dụng chỉ cần cài đặt phần cần thiết trong máy. Ví dụ: Một
người dùng cuối chỉ cần cài JRE để chạy các ứng dụng Java. Lập trình viên desktop cần
cài J2SE, lập trình viên Mobile cần cài J2ME, còn lập trình trên các hệ thống lớn thì cần
đến J2EE.
2. Nguyên tắc tách khỏi
Nội dung:
Tách phần gây phiền phức (tính chất phiền phức) hay ngược lại, tách phần duy nhất cần
thiết (tính chất cần thiết) ra khỏi đối tượng.
Thông thường các chương trình trên một hệ điều hành này thì không thể chạy trên hệ
điều hành khác vì một số lý do:
− Các API của các hệ điều hành khác nhau.
− Cơ chế hỗ trợ phần cứng cũng như sử dụng tài nguyên của các hệ điều
hành cũng khác nhau.
Do đó để một chương trình có thể chạy được trên nhiều hệ điều hành khác nhau, lập
trình viên phải viết code của chương trình cho từng hệ điều hành. Điều này gây ra một
số khó khăn như sau:
− Lập trình viên phải biết rõ API của từng hệ điều hành. Việc học API
của nhiều hệ điều hành cùng lúc là rất khó khăn và nhàm chán.
− Các bản phân phối của chương trình trên từng hệ điều hành là không
đồng bộ.
− Việc chỉnh sửa sau này cho chương trình phải được thực hiện trên tất
cả các phiên bản trên các hệ điều hành.
Do đó Java được chia thành nhiều công nghệ khác nhau: J2SE, J2EE, J2ME.
J2SE hay Java 2 Standard Edition vừa là một đặc tả, cũng vừa là một nền tảng thực
thi (bao gồm cả phát triển và triển khai) cho các ứng dụng Java. Nó cung cấp các API,
các kiến trúc chuẩn, các thư viện lớp và các công cụ cốt lõi nhất để xây các ứng dụng
Java. Mặc dù J2SE là nền tảng thiên về phát triển các sản phẩm chạy trên máy tính để
bàn nhưng những tính năng của nó, bao gồm phần triển khai ngôn ngữ Java lớp gốc, các
công nghệ nền như JDBC để truy vấn dữ liệu chính là chỗ dựa để Java tiếp tục mở
rộng và hỗ trợ các thành phần mạnh mẽ hơn dùng cho các ứng dụng hệ thống quy mô xí
nghiệp và các thiết bị nhỏ.
J2SE gồm 2 thành phần:
− Java Runtime Evironment, Standard Edition (JRE): Môi trường thực
thi cung cấp các Java API, máy ảo Java, và các thành phần khác để
chạy applet viết bằng ngôn ngữ Java.
− Java Software Development Kit, Standard Edition (JDK): JDK là tập
mẹ của JRE, chứa mọi thứ nằm trong JRE, bổ sung thêm các công cụ:
compiler, debugger cần để phát triển applet và các ứng dụng.
Java 2 Platform, Enterprise Edition (Nền tảng Java, phiên bản 2 - bản dành
cho kinh doanh là công nghệ của Sun Microsystems) hay Java EE (gọi tắt là
J2EE) là một nền lập trình dành cho việc phát triển ứng dụng phân tán kiến trúc đa
tầng, chủ yếu dựa vào các thành phần môđun chạy trên các máy chủ ứng dụng.
Java EE bao gồm một số đặc tả kĩ thuật API, như JDBC (Cơ cấu liên nối với cơ sở dữ
liệu), RMI (thi hành phương pháp từ xa), thư điện tử (e-mail), JMS (Java Message
Service - Dịch vụ thông điệp của Java), Dịch vụ mạng (Web services), XML , và đồng
thời nó còn định nghĩa cấu trúc liên nối giữa những kĩ thuật này vói nhau. J2EE còn bao
gồm một số đặc tả chỉ tồn tại trong các thành phần của nó. Những thành phần này bao
gồm Enterprise JavaBean (chủ thể Bean dùng trong kinh doanh), servlet, portlet, JSP và
một số các kĩ thuật vềdịch vụ mạng (web service). Điều này cho phép nhà phát triển tạo
ra một chương trình ứng dụng kinh doanh (enterprise application) không những chỉ có
thể sử dụng trên các nền tảng khác nhau, mà còn có thể khuếch trương thành những qui
mô lớn hơn và tích hợp với những công nghệ kế thừa từ trước đây. Trình chủ của Java
− Ứng dụng Web: Với các công nghệ như JSP, EJB ta có thể tạo ra những
ứng dụng web hiệu quả tương đương với ASP.NET hay PHP.
− Máy chủ web: Với Java Web Server ta có thể tạo môi trường của một
máy chủ chạy web viết bằng Java.