Đặc điểm của Java

Một phần của tài liệu Cài đặt một số thuật toán phân lớp dữ liệu (Trang 26)

L ỜI MỞ ĐẦU

3.3Đặc điểm của Java

Theo Sun, Java rất đơn giản, có bản chất hướng đối tượng, phân tán, được thông dịch, đáng tin cậy, an toàn, trung lập trong kiến trúc, khả chuyển, hiệu suất thi hành cao, và năng động.

3.3.1 Đơn giản

Không ngôn ngữ nào là đơn giản cả, nhưng Java tương đối dễ hơn so với ngôn ngữ lập trình hướng đối tượng C++ phổ biến, vốn là ngôn ngữ thiết kế phần mềm chủ chốt trước khi xuất hiện Java. Java được lập mô hình một phần dựa trên C++, nhưng đã đơn giản hóa và cải tiến đáng kể. Ví dụ, con trỏ (pointer) và đặc tính kế thừa bội( multiple inheritance), và loại bỏ con trỏ. Java sử dụng chếđộ phân tán bộ nhớ và thu gom rác (tức dữ liệu hỏng) tự động, trong khi C++ đòi hỏi chính lập trình viên phải phân phối bộ nhớ và thu gom rác. Ngoài ra, số lượng cấu trúc ngôn ngữ khá ít ỏi đối với một ngôn ngữ mạnh mẽ nhường ấy. Cú pháp chặt chẽ khiến chương trình Java dễ viết mà cũng dễ đọc. Một số người gọi Java là “C++--” bởi nó giống C++, nhưng với nhiều tính năng hơn lại ít khía cạnh tiêu cực hơn.

3.3.2 Hướng đối tượng

Chương trình Java mang bản chất hướng đối tượng bởi vì lập trình bằng Java chỉ tập trung vào mục tiêu tạo đối tượng, thao tác đối tượng, và giúp các đối tượng phối hợp họat động.

Đối tượng luôn có thuộc tính (property) và hành vi (behavior). Thuộc tính được mô tả dựa trên dữ liệu, hành vi do phương thức quy định. Java dùng lớp (class) định nghĩa đối tượng. Lớp tương tự khuôn mẫu (template) dành cho đối tượng. Đối tượng là hiện thân của mô tả lớp. Quá trình tạo đối tượng của lớp gọi là quá trình tạo phiên bản (instantiation).

Chương tình Java bao gồm từ một lớp trở lên. Lớp dược tổ chức theo cấu trúc phân cấp, sao cho lớp con có thể thừa hưởng thuộc tính và hành vi từ lớp cha. Java cung cấp tập hợp lớp định sẵn có thể mở rộng, cho phép bạn áp dụng chúng vào chương trình của mình.

Lập trình hướng đối tượng có tính linh động, tính đơn thể chức năng và khả năng tái sử dụng lý tưởng. Đã nhiều năm qua, công nghệ hướng đối tượng đã được xem là thành phần tinh túy nhất, đòi hỏi nguồn đầu tư đáng kể vào chương trình huấn luyện và cơ sở hạ tầng. Java đã giúp công nghệ hướng đối tượng hòa nhập vào xu thế phát triển của nền điện toán. Java có cấu trúc đơn giản và chặt chẽ, giúp dễ dàng viết và đọc chương trình. Chương trình Java có tính biểu cảm xét về mặt ứng dụng và thiết kế.

3.3.3 Phân tán

Điện tóan phân tán (distributed computing) liên quan đến nhiều máy tính phối hợp họat động trên mạng. Mục đích thiết kế Java là nhằm giúp dễ dàng thực hiện điện toán phân tán. Khả năng nối mạng được tích hợp sẵn vào Java. Việc viết chương trình mạng bằng Java chẳng khác gì gởi và nhận dữ liệu từ tập tin. Ví dụ hình dưới minh họa 3 chương trình chạy trên 3 hệ thống khác nhau; giao tiếp với nhau để thực hiện một tác vụ liên kết.

3.3.4 Thông dịch

Chương trình Java được biên dịch thành mã Java Virtual Machine, gọi là mã byte (bytecode). Mã byte độc lập với máy tính và chạy bất kỳ máy tính nào có trình thông dịch Java.

Thông thường, trình biên dịch chương trình ngôn ngữ cấp cao thành mã máy tính. Mã này chỉ chạy trên máy tính riêng. Nếu chạy trên máy tính khác, bạn buộc phải biên dịch lại chương trình trên máy tính đó. Chẳng hạn, nếu biên dịch chương trình C trong Windows, mã thi hành được tạo bằng trình biên dịch này chỉ có thể xảy trên nền Windows. Với Java, chỉ biên dịch mã nguồn một lần duy nhất, và mã byte do bộ biên dịch Java tạo thành có thể chạy trên bất kỳ hệ nền nào. Chương trình Java không cần biên dịch lại trên máy đích.

4.3.5 Đáng tin cậy

Không ngôn ngữ lập trình nào có thể đảm bảo độ tin cậy tuyệt đối. Java tập trung nỗ lực vào kiểm lỗi, bởi bộ biên dịch Java có thể phát hiện thấy nhiều vấn đề sẽ xảy ra ở giai đoạn thi hành trong các ngôn ngữ khác. Java không sử dụng những loại cấu trúc lập trình có khuynh hướng gây lỗi như nhiều ngôn ngôn ngữ khác. Ví dụ, nó không hỗ trợ con trỏ, loại trừ khả năng ghi chồng lên bộ nhớ và phá hỏng dữ liệu.

Java cung cấp đặc tính xử lý biệt lệ lúc thi hành nhằm gia tăng độ tin cậy. Java phát hiện và giải quyết tình huống biệt lệ sao cho chương trình có thể tiếp tục họat động bình thường và kết thúc thích hợp dẫu thi hành có xảy ra.

4.3.6 An toàn

Là ngôn ngữ lập trình Internet, Java được áp dụng trong môi trường mạng phân tán. Nếu bạn tải tiểu chương trình Java(loại chương trình đặc biệt)

Computer 1 Java Computer 1 Java Computer 1 Java

Hình 4: Các chương trình Java có thể chạy trên hệ thống khác nhau và phối hợp họat động cùng nhau.

rồi chạy trên nhiều máy tính của mình, nó sẽ không tổn hại đến hệ thống của bạn, do Java thực thi nhiều cơ chế bảo mật nhằm bảo vệ hệ thống khỏi bị thiệt hại bởi các chương trình lạc điệu. Bảo mật được xây dựng trên lập luận không nên tin vào bất cứđiều gì.

Tuy nhiên, an toàn tuyệt đối là điều không thể có. Gần đây người ta đã phát hiện thấy lỗi bảo mật trong Java, song rất hiếm hoi và không đáng kể, tất cảđều được định danh.

4.3.7 Trung lập trong kiến trúc

Đặc tính đáng lưu ý nhất của Java là trung lập trong kiến trúc (architecture neitral), hay độc lập với hệ nền (platform independent). Bạn có thể viết chương trình chạy trên hệ nền bất kỳ với Java Virtual Machine. Các hãng phân phối hệđiều hành lớn đã thông qua Java Virtual Machine, và chẳng bao lâu Java sẽ chạy trên tất cả máy tính.

4.3.8 Khả chuyển

Chương trình Java có tính khả chuyển, vì chúng có thể chạy trên bất kỳ hệ nền nào mà không cần biên dịch lại. Hơn nữa không có đặc tính chuyên biệt về nền trong quy cách ngôn ngữ Java. Ở một số ngôn gnữ khác, chẳng hạn như Ada, số nguyên lớn nhất thay đổi trong từng hệ nền. Kích thước số cốđịnh làm cho chương trình có tính khả chuyển.

Bản thân môi trường Java có thể chuyển đến phần cứng và hệđiều hành mới. Thực vậy, bản thân trình biên dịch Java được viết bằng ngôn ngữ Java.

4.3.9 Hiệu suất thi hành thỏa đáng

Hiệu suất thi hành của Java thường bị phê bình bởi lẽ mã byte không bao giờ chạy nhanh bằng ngôn ngữ được biên dịch, như C++ chẳng hạn. Vì Java được thông dịch nên mã byte không do hệ thống trực tiếp thi hành, nhưng thay vào đó mã chạy thông qua trình thông dịch. Tuy nhiên tốc độ này trên cả mức thỏa đáng đối với phần lớn chương trình ứng dụng tương tác, nơi CPU thường rãnh rỗi chờ nhận dữ liệu nhập vào hoặc chờ dữ liệu từ nguồn khác.

Tốc độ CPU đã tăng vọt trong vài năm qua và xu thế này chắc chắn vẫn tiếp tục. Có nhiều cách cải thiện hiệu suất thi hành. Nếu trước đây đã dùng Sun Java Virtual Machine (JVM) thì thấy Java chạy quá chậm. Tuy nhiên, JVM mới của Borland, Microsoft, và Symantec đều nhanh gấp 10 lần hoặc thậm chí 20 lần so với Sun JVM đời đầu.

4.3.10 Đa tuyến thi hành (adsbygoogle = window.adsbygoogle || []).push({});

Đa mạch thi hành (multithread) là khả năng thực hiện đồng thời nhiều tác vụ của chương trình – ví dụ tải tập tin video xuống trong khi đang chiếu video. Khả năng lập trình đa tuyến đã tích hợp suôn sẽ vào Java. Trong các

ngôn ngữ khác, bạn phải gọi các thủ tục đặc trưng của hệđiều hành để tận dụng đặc tính đa tuyến thi hành.

4.3.11 Năng động

Java được thiết kếđể thích ứng với môi trường luôn tiến hóa. Bạn tự do đưa thêm phương thức và thuộc tính mới vào lớp mà không ảnh hưởng gì đến máy khách của chúng

4.4 Quy cách ngôn ng Java

Ngôn ngữ máy tính có nguyên tắc sử dụng nghiêm ngặt. Bạn phải tuân thủ những nguyên tắc đó khi viết chương trình nếu muốn máy tính hiểu được chương trình. Sun Microsystem, cha đẻ của Java, dự định tiếp tục kiểm sóat Java vì một nguyên nhân tốt đẹp: không để các ngôn ngữ này mất đi các chuẩn thống nhất của nó.

Quy cách là cách định nghĩa kỹ thuật của ngôn ngữ, bao gồm cú pháp, cấu trúc và giao diện lập trình ứng dụng(API), nơi chứa các lớp định sẵn.

Sun phát hành từng phiên bản Java với một Java Development Toolkit, gọi tắt là JDK, bộ công cụ dòng lệnh sơ đẳng, chứa trình biên dịch, trình thông dịch, và Applet Viewr, cùng với nhiều trình tiện ích ứng dụng khác.

4.5 Công c thiết kế Java và Jbuilder

JDK có tập hợp chương trình riêng biệt, mỗi chương trình được gọi từ một dòng lệnh. Ngoài JDK, còn có nhiều bộ chương trình thiết kế Java trên thị trường ngày nay. Các công cụ thiết kế bao gồm :

- Jbuilder của Borland - Visual J++ của Microsoft - Visual café của Symantec - Jfactory của Rouge Wave - Sun Java Workshop

- Visual Age for Java của IBM

Những công cụ này cung cấp môi trường thiết kế tích hợp(IDE) dùng để xây dựng chương trình Java. Chức năng cơ bản của chúng rất giống nhau. Những đặc tính như soạn thảo, biên dịch, xây dựng, xử lý lỗi, và trợ giúp trực tuyến, đều được tích hợp vào một giao diện người dùng dạng đồ họa. Chỉ việc gõ mã nguồn vào một cửa sổ, hoặc mở tập tin hiện có trong cửa sổ, kếđến nhấp nút lệnh, khoản mục trên menu, hoặc nhấn phím chức năng để biên dịch mã nguồn.

4.6 Các lp s dng trong chương trình

4.6.1 Mảng

a> Mảng một chiều

Muốn sử dụng mảng trong chương trình java bạn phải khai báo mảng và phần tử lưu trữ trong mảng. Đây là cú pháp khai báo mảng:

Datatype [] arrayName; Hoặc

Datatype arrayName[];

Đoạn mã sau là ví dụ về cú pháp này:

Double [] myList;

Do mảng Java là đối tượng nên phần khai báo không phân phối không gian bộ nhớ cho mảng. Không thể gán phần tử cho mảng trừ khi mảng đã được tạo.

Sau khi khai báo mảng, dùng toán tử new tạo mảng dựa trên cú pháp: arrayName= new datatype[arraySize];

hoặc

datatype arrayName=new datatype[arraySize];

b> Mảng đa chiều

Để biểu diễn ma trận hoặc bảng biểu, ta dùng mảng hai chiều. Mảng hai chiều trong Java được khai báo dưới dạng đối tượng mảng. Dòng mã bên dưới khai báo và tạo ma trận 5x5.

Int [][] matrix= new Int [5][5];

Hoặc

Int matrix [][]= new Int [5][5]; (adsbygoogle = window.adsbygoogle || []).push({});

Mảng hai chiều sử dụng hai chỉ số, một dành cho mảng chính còn một dành cho mảng chứa trong phạm vi mảng chính. Để thuận tiện, ta gọi đó là chỉ số chính và chỉ số phụ. Cấu trúc sau đây gán giá trị 7 cho phần tử cụ thể có chỉ số chính bằng 2 và chỉ số phụ bằng 0;

Matrix[2][0]=7;

Đôi khi cần biểu diễn các cấu trúc dữ liệu đa chiều. Trong Java, có thể tạo mảng n chiều với số nguyên n bất kỳ, miễn là máy tính có đủ dung lượng nhớ để lưu trữ mảng.

4.6.2 Lớp chuỗi (String)

Lớp java.lang.String biểu diễn chuỗi ký tự. Dùng cú pháp sau đây để tạo chuỗi

String newString=new String(s);

+ So sánh chuỗi : Để so sánh chuỗi có thể sử dụng phương thức

Phương thức này trả về giá trị 0 nếu s1 bằng s2, gán giá trị nhỏ hơn 0 nếu s1 nhỏ hơn s2(xét theo thứ tự abc), và giá trị lớn hơn 0 nếu s1 lớn hơn s2.

Phương thức equals() trả về giá trị true nếu hai chuỗi bằng nhau và false khi chúng không băng nhau.

+ Ghép chuỗi: Dùng phương thức concat() ghép hai chuỗi. Ví dụ, câu lệnh sau ghép chuỗi s1 và s2 thành s3:

String s3=s1.concat(s2);

+ Chuỗi con: Để lấy chuỗi con của chuỗi thì dùng phương thức

subString()

+ Để lấy chiều dài của chuỗi thì dùng phương thức length() 4.6.3 Lớp StringTokenizer

Lớp java.util.StringTokenizer được dùng để chia chuỗi thành nhiều phần sao cho có thể truy xuất và xử lý thông tin chứa bên trong. Ví dụ, để có được tất cả các từ trong chuỗi “I’m learning Java now”, thì tào ra một phiên bản của lớp StringTokenizer dành cho chuỗi đó rồi dùng phương thức truy xuất từng từ một.

Dưới đây là các phương thức tạo dựng khả dựng cho StringTokenizer:

public StringTokenizer(String s, String delim, boolean returnTokens)

Xây dựng lớp StringTokenizer cho chuỗi s với dấu phân cách cụ thể. Nếu returnTokens là true, dấu phân cách được trả vềở dạng thẻ bài.

public StringTokenizer(String s, String delim)

Xây dựng StringTokenizer cho chuỗi s với dấu phân cách delim xác định và dấu phân cách không được xem như là thẻ bài.

public StringTokenizer(String s)

Xây dựng lớp StringTokenizer cho chuỗi s với dấu phân cách mặc định “\t\n\r”(ký tự trắng, tab, dòng mới, ký tự trở về đầu dòng), và dấu phân cách này không được xem là thẻ bài.

Chương 4: XÂY DNG GII PHÁP VÀ TH

NGHIM KT QU

Chương này, tác giả sẽđi sâu phân tích những yêu cầu của đề tài, xây dựng giải pháp cho các yêu cầu: thiết kế kiến trúc hệ thống, sơ đồ chức năng hệ

thống…, thử nghiệm kết quả trên chương trình mà tác giả đã xây dựng. Có trình bày kết quả đạt được, nhận xét, so sánh chúng. Phần cuối, tác giả trình bày những hạn chế của chương trình, cách khắc phục và hướng phát triển.

4.1 Tng quan v h thng

Hệ thống PLDL được xây dựng có tính năng phân lớp dữ liệu từ tập dữ liệu được đưa vào theo một số khuôn dạng đã được định nghĩa trước. Từ tập dữ liệu đầu vào ta cần rút ra được một số tập luật hay và có ý nghĩa nhất định. Hệ thống có chức năng so sánh, đánh giá được các thuật toán phân lớp dữ liệu khác nhau. Mô tả hệ thống

4.1.1 Mô hình chung của hệ thống như sau:

Tệp kết quả phân lớp (adsbygoogle = window.adsbygoogle || []).push({});

Lựa chọn thuật toán phân lóp

Mã hoá, sinh tệp từđiển Tệp giao dịch đầu vào

4.1.2 Sơ đồ chức năng chương trình

4.1.3 Module hóa chức năng chương trình

Phân lớp dữ liệu

Xây dựng bộ phân lớp (mô hình)

Vận hành mô hình

Xây dựng các thuật toán phân lớp Quản lý dữ liệu Xây dựng bộ mã hóa dữ liệu Sinh tệp từ điển, tệp dữ liệu mã Định dạng chuẩn dữ liệu Báo cáo kết quả xử lý Hình5.2 Biểu đồ phân cấp chức năng hệ thống phân lớp Xây dựng các thuật toán phân lớp Phân lớp quy nạp trên cây quyết định Phân lớp Bayes Phân lớp bằng mạng nơron lan truyền ngược Phân lớp bằng thuật giải di truyền Worksapce Database DBReade r DBCacheReader DBWriter DBCacheWriter Algorithms

Tree Bayses ILA

Itemset

TestClass ViewDB Test

4.1.4 Kiến trúc hệ thống

4.1.5 Mô tả chức năng

Các chức năng chính của hệ thống PLDL gồm:

a. Quản lý dữ liệu: Chức năng này có tính năng cung cấp khả năng định dạng đầu vào dữ liệu chuẩn cho quá trình phân lớp dữ liệu. Đầu vào được chọn có thể là tập dữ liệu đã chuẩn hóa hoặc là tập dữ liệu đã mã hóa để giảm thời gian thực hiện

b. Phân lớp dữ liệu: Chức năng này gồm hai chức năng nhỏ: chức năng học và kiểm tra một đối tượng mới. Có thể lựa chọn thuật toán phân lớp dữ liệu,. trong quá trình phân lớp dữ liệu có đưa ra những thống kê cần quan tâm sẽđược sử dụng để so sánh đánh giá các thuật toán sau này. Ghi tập luật ra tệp, máy in

c. Trợ giúp : Đưa ra trợ giúp kịp thời cho các chức năng

4.1.6 Cấu trúc dữ liệu

Các CSDL hiện nay rất lớn thường có thểđược lưu trữ trên DBMS. Nhưng điều này sẽ làm cho dữ liệu bị phụ thuộc chặt chẽ vào môi trường cài đặt và không linh động khả chuyển được. Chính vì vậy khi xây dựng ứng dụng này,

Dữ liệu đã mã hoá Từđiển ánh xạ Dữ liệu giao dịch Tiền xử lý dữ liệu Định dạng dữ liệu Mã hoá Tìm tập luật Phân lớp Thống kê kết quả Sinh dữ liệu giả Báo cáo kết quả xử Kho dữ liệu chưa phân lớp Dữ liệu cần phân lớp Hình5.4 : Kiến trúc hệ thống phân lớp dữ liệu

đầu vào và đầu ra được lựa chọn để sử dụng sẽ có cấu trúc là tệp dữ liệu. Tệp giao dịch đầu vào hoàn toàn có thểđược sinh ra từ bất kỳ một cơ sở lưu trữ dữ liệu quan hệ nào, như MS SQL, Oracle, MySQL hay Access. Chỉ cần quy định

Một phần của tài liệu Cài đặt một số thuật toán phân lớp dữ liệu (Trang 26)