Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 111 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
111
Dung lượng
620,21 KB
Nội dung
Nhập môn lập trình Java Roy Miller, Tác giả, The Other Road, LLC Tóm tắt: Ngôn ngữ Java, tảng Java phát triển cách mạng lập trình Mục tiêu hướng dẫn giới thiệu cho bạn cú pháp Java mà bạn chắn gặp đường nghề nghiệp cho bạn thấy thành tố đặc thù (idioms) giúp bạn tránh khỏi rắc rối Theo bước Roy Miller, chuyên gia Java ông hướng dẫn bạn điểm cốt yếu lập trình Java, bao gồm mẫu hình hướng đối tượng (OPP) cách thức áp dụng vào lập trình Java; cú pháp ngôn ngữ Java cách sử dụng; tạo đối tượng thêm hành vi, làm việc với sưu tập (collections), xử lý lỗi; mẹo để viết mã lệnh tốt Về tài liệu Tài liệu đề cập đến gì? Hướng dẫn giới thiệu cho bạn phương pháp lập trình hướng đối tượng (OOP) ngôn ngữ Java Nền tảng Java chủ đề rộng lớn, đề cập đến tất tài liệu này, trình bày đủ để bạn khởi đầu Tài liệu cung cấp thêm thông tin hướng dẫn bạn nỗ lực lập trình Java Ngôn ngữ Java tất nhiên có ưu nhược điểm, ảnh hưởng đến ngành công nghiệp phát triển phần mềm chối cãi Mặt tốt ngôn ngữ Java gây khó khăn so với C++ Java giảm bớt số nhiệm vụ lập trình phiền phức, quản lý tường minh nhớ, cho phép người lập trình tập trung vào logic nghiệp vụ Mặt nó, theo người túy chủ nghĩa hướng đối tượng, Java có nhiều tàn dư phi đối tượng để coi công cụ tốt Tuy nhiên, vị trí bạn biết cách sử dụng ngôn ngữ công cụ công cụ thích hợp phục vụ cho công việc bạn lựa chọn nghề nghiệp sáng suốt Tôi nên đọc tài liệu không chứ? Nội dung tài liệu hướng dẫn nhằm đến người bắt đầu lập trình Java, người chưa quen với khái niệm lập trình hướng đối tượng đặc biệt chưa quen với tảng Java Nó coi người đọc có kiến thức chung để tải cài đặt phần mềm, kiến thức chung lập trình cấu trúc liệu (như mảng), không yêu cầu nhiều việc làm quen sơ qua với lập trình hướng đối tượng Tài liệu hướng dẫn bạn từ việc thiết lập Java máy bạn, cài đặt làm việc với Eclipse, môi trường phát triển tích hợp (IDE) miễn phí để viết mã Java Từ điểm trở đi, bạn học điều lập trình Java, bao gồm mẫu hình lập trình hướng đối tượng cách áp dụng vào lập trình Java; cú pháp cách dùng ngôn ngữ Java; tạo đối tượng thêm hành vi, làm việc với sưu tập, xử lý lỗi; mẹo để viết mã lệnh tốt Sau học hết tài liệu này, bạn trở thành lập trình viên Java – lập trình viên Java khởi đầu, dù lập trình viên Java Các yêu cầu phần mềm Để chạy ví dụ đoạn mã mẫu hướng dẫn này, bạn cần có Java Platform, Standard Edition (J2SE), phiên 1.4.2 hơn, máy bạn phải cài IDE Eclipse Đừng lo bạn chưa cài đặt gói – cho bạn cách làm phần khởi động Tất ví dụ mã lệnh hướng dẫn kiểm thử với J2SE 1.4.2 chạy Windows XP Tuy nhiên, điều tuyệt vời tảng Eclipse chạy hầu hết hệ điều hành mà có khả bạn dùng, bao gồm Windows 98/ME/2000/XP, Linux, Solaris, AIX, HP-UX, chí Mac OS X Khởi động Các dẫn cài đặt Trong phần tiếp theo, hướng dẫn bạn qua bước tải cài đặt Java Platform Standard Edition (J2SE), phiên 1.4.2 IDE Eclipse Nền Java giúp bạn dịch chạy chương trình Java Còn IDE Eclipse mang lại cho bạn công cụ hùng mạnh thân thiện với người sử dụng để viết mã lệnh ngôn ngữ Java Nếu bạn cài đặt Java SDK Eclipse, vui lòng chuyển sang phần Tìm hiểu nhanh Eclipse mục tiếp theo, Các khái niệm lập trình hướng đối tượng, bạn cảm thấy thuận tiện Cài đặt Java SDK Mục đích ban đầu ngôn ngữ Java cho phép lập trình viên viết chương trình để chạy tảng nào, ý tưởng gói gọn cụm từ “Viết lần, chạy đâu” (WORA) Trong thực tế, điều hoàn toàn không đơn giản, trở nên dễ dàng Nhiều thành phần khác công nghệ Java hỗ trợ cho nỗ lực Java có ấn bản, ấn chuẩn (Standard), ấn doanh nghiệp (Enterprise), ấn di động (Mobile), hai ấn sau tương ứng dành cho việc phát triển ứng dụng doanh nghiệp thiết bị cầm tay Chúng ta làm việc với J2SE, bao gồm tất thư viện lõi Java Tất bạn cần làm tải cài đặt Để tải phát triển phần mềm J2SE (J2SE SDK), làm theo bước sau: Mở trình duyệt đến trang chủ Công nghệ Java Tại đầu trang bạn thấy nhiều đường kết nối đến vùng chủ đề công nghệ Java khác Chọn J2SE (Core/Desktop) Trong danh sách phát hành J2SE tại, chọn J2SE 1.4.2 Tại cột dẫn hướng bên trái trang kết quả, nhấp chuột vào Downloads Có vài liên kết tải trang Tìm nhấp chọn liên kết Download J2SE SDK Chấp nhận điều kiện giấy phép sử dụng nhấp chọn Continue Bạn thấy danh sách gói tải theo hệ điều hành Chọn gói tải thích hợp với hệ điều hành mà bạn dùng Ghi lưu tệp vào ổ cứng bạn Khi tải xong, chạy chương trình cài đặt để cài đặt SDK ổ cứng bạn, nên chọn thư mục có tên thích hợp thư mục gốc ổ cứng Tuyệt! Bây bạn có môi trường Java máy Bước cài đặt môi trường phát triển tích hợp (IDE) Cài đặt Eclipse Môi trường phát triển tích hợp (IDE) che giấu nhiều chi tiết công nghệ trần tục làm việc với ngôn ngữ Java, bạn tập trung vào viết chạy mã lệnh Bộ JDK mà bạn vừa cài đặt bao gồm vài công cụ dòng lệnh cho phép bạn biên dịch chạy chương trình Java mà không cần có IDE, sử dụng công cụ nhanh chóng trở nên vất vả trừ chương trình đơn giản Sử dụng IDE che giấu nhiều chi tiết mang lại cho bạn công cụ mạnh để giúp bạn lập trình nhanh tốt hơn, đơn giản cách lập trình dễ chịu Không cần thiết phải trả tiền để mua IDE tuyệt hảo IDE Eclipse dự án nguồn mở bạn, tải miễn phí Eclipse lưu trữ theo dõi mã lệnh Java bạn tệp liệu dễ đọc nằm hệ thống tệp bạn (Bạn dùng Eclipse để làm việc với mã lệnh kho CVS) Tin tốt lành Eclipse để bạn làm việc với tệp bạn muốn, ẩn giấu chi tiết tệp bạn muốn làm việc với cấu trúc Java khác lớp chẳng hạn (ta thảo luận chi tiết sau) Việc tải cài đặt Eclipse đơn giản Hãy làm theo bước sau: Mở trình duyệt đến trang web Eclipse Nhấn chọn đường liên kết Downloads bên trái trang Nhấn chọn đường liên kết Main Eclipse Download Site để vào trang tải dự án Eclipse Bạn thấy danh sách kiểu xây dựng (build types) tên Chọn mục 3.0 Ở trang, bạn thấy danh sách SDK Eclipse tùy theo hệ điều hành; chọn thích hợp với hệ thống bạn Ghi lưu tệp vào ổ cứng Khi tải xong, chạy trình cài đặt cài đặt Eclipse vào ổ cứng bạn, nên chọn thư mục có tên thích hợp thư mục gốc ổ cứng Tất việc lại thiết đặt IDE Thiết đặt Eclipse Để dùng Eclipse viết mã Java, bạn phải cho Eclipse biết vị trí Java đâu máy bạn Hãy làm theo bước sau: Khởi chạy Eclipse cách nhấn đúp chuột vào tệp eclipse.exe, tệp chạy thi hành tương đương hệ điều hành bạn Khi hình Welcome xuất hiện, nhấn đường liên kết Go To The Workbench Thao tác đưa bạn đến bối cảnh tài nguyên (sẽ đề cập chi tiết sau) Nhấn chọn Window>Preferences>Installed JREs, thao tác cho phép bạn rõ vị trí nơi môi trường Java cài đặt vào máy bạn (xem hình 1) Hình Các lựa chọn ưu tiên Eclipse Nhiều khả Eclipse tìm thấy JRE cài đặt sẵn, bạn nên rõ ràng đến JRE mà bạn cài mục Cài đặt Java SDK Bạn làm điều hộp thoại Preferences (các lựa chọn ưu tiên) Nếu Eclipse liệt kê JRE có sẵn, nhấn chuột chọn nhấn Edit, trái lại, nhấn Add Chỉ rõ đường dẫn đến thư mục JRE JDK mà bạn cài mục Cài đặt Java SDK Nhấn OK Bây Eclipse thiết đặt để biên dịch chạy mã lệnh Java Trong phần vòng xem qua môi trường Eclipse để bạn làm quen với công cụ Một vòng xem qua Eclipse Làm việc với Eclipse chủ đề lớn vượt phạm vi tài liệu hướng dẫn Xem phần Các tài nguyên để có thêm thông tin Eclipse Ở đây, trình bày vừa đủ để bạn làm quen với cách làm việc Eclipse sử dụng để lập trình Java Giả sử bạn có Eclipse chạy, bạn ngừng xem phần phối cảnh Tài nguyên Eclipse cung cấp tập phối cảnh mã lệnh bạn viết Phối cảnh Tài nguyên (Resource) hiển thị khung nhìn hệ thống tệp tin bạn vùng làm việc (workspace) Eclipse mà bạn sử dụng Một vùng làm việc giữ tất tệp liên quan đến việc phát triển Eclipse Bây chưa có vùng làm việc bạn để bạn phải thực quan tâm Nhìn chung, Eclipse có phối cảnh, chứa khung nhìn Trong phối cảnh Tài nguyên, bạn thấy có khung nhìn Navigator, khung nhìn Outline, … Bạn kéo thả tất khung nhìn vào vị trí bạn muốn Nó môi trường tùy biến vô hạn Thế bây giờ, xếp đặt mặc định đủ tốt Nhưng thấy chưa cho phép ta làm ta muốn Bước để viết mã lệnh Java Eclipse tạo dự án Java Đây cấu trúc ngôn ngữ Java; đơn giản cấu trúc Eclipse giúp bạn tổ chức mã lệnh Java Làm theo bước sau để tạo dự án Java: Nhấn chuột vào File>New>Project để hiển thị cửa sổ thủ thuật tạo dự án (New Project wizard - xem hình 2) Đây thực trình thủ thuật thủ thuật, cho phép bạn lựa chọn sử dụng thủ thuật bạn muốn (thủ thuật New Project, thủ thuật New File, vân vân) Hình Trình thủ thuật mở dự án Hãy đảm bảo bạn chọn thủ thuật Java Project nhấn Next Nhập tên dự án bạn muốn (tên “Intro” gợi ý hay), giữ nguyên lựa chọn mặc định nhấn Finish Ở bước này, Eclipse hỏi bạn liệu có nên chuyển sang phối cảnh Java không Nhấn chọn No Bạn vừa tạo dự án Java có tên Intro, bạn phải nhìn thấy khung nhìn Navigator góc bên trái hình Chúng ta không chuyển sang phối cảnh Java sau tạo dự án có phối cảnh tốt để dùng cho mục đích Nhấn nút Open Perspective phiếu nằm góc bên phải cửa sổ, sau chọn phối cảnh Java Browsing Phối cảnh hiển thị cho bạn bạn cần thấy để dễ dàng viết chương trình Java Khi viết mã lệnh Java, ta duyệt qua vài đặc tính Eclipse để bạn học cách viết, sửa đổi quản lý mã lệnh Tuy nhiên, trước thực điều này, phải trình bày vài khái niệm lập trình hướng đối tượng, ta thực điều phần Ngay bây giờ, kết thúc phần cách xem số tài liệu Java trực tuyến API Java trực tuyến Giao diện lập trình ứng dụng (API) Java nhiều, học cách tìm kiếm điều quan trọng Nền tảng java đủ lớn để cung cấp cho bạn công cụ mà bạn cần lập trình Học cách khai thác khả cần nhiều nỗ lực học chế ngôn ngữ Nếu bạn vào trang tài liệu Java Sun (xem phần Các tài nguyên để tìm đường liên kết), bạn thấy đường liên kết tới tài liệu API cho phiên SDK Đi theo liên kết dành cho phiên 1.4.2 để xem tài liệu Bạn thấy có khung trình duyệt: Danh sách gói có sẵn khung bên trái Danh sách tất lớp khung bên trái Chi tiết mà bạn chọn phía bên phải Tất lớp SDK có Chọn lớp HashMap Ở bên phải bạn thấy mô tả chi tiết lớp Phía đỉnh tên gói chứa lớp này, hệ phân bậc lớp, giao diện mà lớp thực (phần nằm phạm vi tài liệu này), lớp trực tiếp mà lớp có Tiếp sau, bạn thấy mô tả chi tiết lớp Đôi mô tả có ví dụ cách dùng, liên kết có liên quan, gợi ý kiểu cách, … Sau phần mô tả, bạn thấy danh sách hàm tạo (constructors), tiếp danh sách tất phương thức lớp, tiếp toàn phương thức thừa kế, sau mô tả chi tiết tất phương thức Thông tin đầy đủ có bảng mục chi tiết khung bên tay phải Nhiều thuật ngữ đoạn (như gói – package) với bạn vào lúc Đừng lo lắng Chúng ta trình bày chúng cách chi tiết Bây giờ, điều quan trọng bạn biết tài liệu ngôn ngữ Java sẵn sàng trực tuyến cho bạn dùng Các khái niệm OOP Một đối tượng gì? Java biết đến ngôn ngữ hướng đối tượng (OO - object-oriented), bạn sử dụng ngôn ngữ để lập trình hướng đối tượng Điều khác so với lập trình thủ tục, hầu hết lập trình viên không hướng đối tượng Bước bạn phải hiểu đối tượng gì, khái niệm sở OOP Một đối tượng bó mã lệnh tự thân trọn vẹn (self-contained), tự hiểu nói cho đối tượng khác chúng đưa yêu cầu mà hiểu Một đối tượng có thành phần liệu (các biến) phương thức, yêu cầu mà biết cách trả lời (dù chúng không diễn đạt lời câu hỏi) Tập phương thức mà đối tượng biết cách trả lời gọi giao diện đối tượng Một vài phương thức mở công cộng, nghĩa đối tượng khác gọi đến chúng Tập phương thức gọi giao diện công cộng đối tượng Khi đối tượng gọi phương thức đối tượng khác, gọi gửi thông điệp (sending a message message send) Cụm từ thuật ngữ OO hầu hết giới Java người hay nói, “gọi phương thức này” “gửi thông điệp này” Trong phần tiếp theo, xem xét ví dụ minh họa khái niệm giúp bạn hiểu vấn đề rõ ràng Ví dụ minh họa khái niệm đối tượng Giả sử có đối tượng Person Mỗi Person có tên, tuổi, chủng tộc giới tính Mỗi Person biết nói biết Một Person hỏi tuổi Person khác, yêu cầu Person khác bắt đầu (hay dừng) Diễn đạt theo thuật ngữ lập trình, bạn tạo đối tượng Person khai báo số biến (như tên tuổi) Nếu bạn tạo đối tượng Person thứ hai, đối tượng hỏi tuổi đối tượng thứ yêu cầu đối tượng thứ bắt đầu Nó thực điều cách gọi đến phương thức đối tượng Person Khi bắt đầu viết mã lệnh ngôn ngữ Java, bạn hiểu ngôn ngữ triển khai thực khái niệm đối tượng Nói chung, khái niệm đối tượng ngôn ngữ Java ngôn ngữ hướng đối tượng khác, việc triển khai thực khác ngôn ngữ Các khái niệm phổ quát Vì thật này, lập trình viên hướng đối tượng, bất chấp họ lập trình ngôn ngữ nào, có xu hướng phát biểu khác so với lập trình viên thủ tục Các lập trình viên thủ tục thường nói hàm mô đun Lập trình viên hướng đối tượng lại nói đối tượng họ Khi chạy mã lệnh này, nhận báo lỗi Màn hình hiển thị sau: java.lang.ClassCastException at intro.core.Adult.main(Adult.java:19) Exception in thread "main" Lưu vết ngăn xếp báo cho biết kiểu lỗi số hiệu dòng xuất lỗi Hãy nhớ phải ép kiểu (cast) gỡ bỏ Object khỏi sưu tập Chúng ta có sưu tập đối tượng Integer thử lấy đối tượng thứ lệnh get(0) (trong số phần tử danh sách danh sách 0, mảng) ép kiểu thành String Môi trường chạy thi hành Java kêu ca lỗi Lúc chương trình ngừng Hãy để chấm dứt nhẹ nhàng cách xử lý lỗi này: try { String wontWork = (String) myAdult.getWallet().get(0); } catch (ClassCastException e) { System.out.println("You can't cast that way."); } Tại bắt lỗi in thông báo lịch Một cách khác ta không làm khối catch, in thông báo lịch khối finally, điều không cần thiết Trong vài trường hợp, đối tượng lỗi (thường có tên khởi đầu e ex, không thiết phải thế) cung cấp cho bạn nhiều thông tin lỗi, chúng giúp bạn nắm thông tin tốt sửa chữa lỗi cách dễ dàng Hệ phân cấp lỗi Ngôn ngữ Java tích hợp chặt chẽ trọn vẹn hệ phân cấp lỗi, điều có nghĩa có nhiều kiểu lỗi Ở mức cao nhất, số lỗi kiểm tra nhờ trình biên dịch, số lỗi khác, gọi RuntimeException, trình biên dịch không kiểm tra Quy tắc Java bạn phải bắt lỗi xác định rõ lỗi Nếu phương thức đưa lỗi RuntimeException, phương thức phải xử lý lỗi, phải rõ phương thức gọi phải làm việc Bạn làm việc với biểu thức throws chữ ký phương thức Ví dụ: protected void someMethod() throws IOException Trong mã lệnh bạn, bạn gọi phương thức mà phương thức rõ đưa kiểu lỗi, bạn phải xử lý cách đó, bổ sung thêm mệnh đề throws vào chữ ký phương thức bạn để chuyển tiếp đến ngăn xếp lời gọi phương thức gọi mã lệnh bạn Trong trường hợp xảy kiện lỗi, môi trường chạy thi hành ngôn ngữ Java tìm trình xử lý lỗi đâu đó, tới tận ngăn xếp trình xử lý nơi mà lỗi phát sinh Nếu không tìm thấy trình xử lý lỗi truy đến đỉnh ngăn xếp môi trường chạy thi hành Java dừng chương trình lại Một tin tốt lành hầu hết IDE (Eclipse hiển nhiên nằm số này) thông báo cho bạn mã lệnh bạn cần phải bẫy lỗi đưa phương thức mà bạn gọi Sau bạn định làm với Còn nhiều điều để nói xử lý lỗi, dĩ nhiên thế, lại nhiều để trình bày tài liệu Hy vọng bàn đến giúp bạn hiểu đợi bạn Các ứng dụng Java Ứng dụng gì? Chúng ta thấy ứng dụng rồi, dù ứng dụng đơn giản Lớp Adult có phương thức main() từ xuất Phương thức cần thiết bạn cần phương thức để Java thực thi mã lệnh bạn Thông thường, đối tượng lĩnh vực ứng dụng bạn phương thức main() Ứng dụng Java điển hình thường bao gồm:: Chỉ lớp có phương thức main() để khởi động thứ Một loạt lớp khác để thực công việc Để minh họa chúng làm việc sao, cần bổ sung thêm lớp khác vào ứng dụng Lớp gọi “trình điều khiển” (driver) Tạo lớp điều khiển Lớp điều khiển đơn giản: package intro.core; public class CommunityApplication { public static void main(String[] args) { } } Làm theo bước sau để tạo lớp điều khiển thực để điều khiển chương trình chúng ta: Tạo lớp Eclipse cách dùng nút công cụ New Java Class mà ta dùng để xây dựng lớp Adult phần Khai báo lớp Đặt tên lớp CommunityApplication, đảm bảo bạn đánh dấu tùy chọn để thêm phương thức main() vào lớp Eclipse tạo lớp cho bạn, bao gồm phương thức main() Xóa phương thức main() khỏi lớp Adult Tất phải làm đặt thứ vào phương thức main() chúng ta: package intro.core; public class CommunityApplication { public static void main(String[] args) { Adult myAdult = new Adult(); System.out.println(myAdult.walk(10)); } } Tạo cấu hình khởi chạy Eclipse, giống ta làm lớp Adult phần Thực thi mã lệnh Eclipse, chạy cấu hình Bạn thấy đối tượng 10 bước Bây bạn có ứng dụng đơn giản bắt đầu CommunityApplication.main(), dùng đối tượng lĩnh vực ứng dụng Adult Dĩ nhiên, ứng dụng phức tạp thế, ý tưởng Không có bất thường ứng dụng Java có hàng trăm lớp Một lớp điều khiển khởi động thứ, chương trình chạy nhờ vào việc lớp cộng tác với để thực công việc Theo dõi việc thi hành chương trình khó khăn bạn quen với chương trình hướng thủ tục, khởi động từ điểm đầu chạy cuối, dễ hiểu thực hành Các tệp JAR Bạn đóng gói ứng dụng Java để người khác dùng gửi mã lệnh cho người khác để họ sử dụng cho chương trình riêng họ (như thư viện đối tượng hữu ích hay khung công tác)? Bạn tạo tệp Java Archive (JAR) để đóng gói mã lệnh cho lập trình viên khác tích hợp vào Java Build Path Eclipse, tích hợp vào đường dẫn lớp họ dùng công cụ dòng lệnh Một lần nữa, Eclipse khiến việc trở nên dễ dàng Tạo tệp JAR Eclipse (và nhiều IDE khác) chớp mắt: Trong vùng làm việc bạn, nhấn chuột phải vào gói intro.core chọn mục Export Chọn mục JAR file hộp thoại Export, sau nhấn chọn Next Chọn vị trí mà bạn muốn đặt tệp JAR, đặt cho tệp tên bạn muốn với phần đuôi mở rộng jar Nhấn chọn Finish Bạn thấy tệp JAR vừa tạo vị trí mà bạn xác định Khi có tệp JAR (của bạn hay từ nguồn khác), bạn sử dụng lớp nằm tệp viết mã lệnh bạn đặt tệp JAR vào Java Build Path Eclipse Làm việc không tốn công sức Hiện mã lệnh ta cần thêm vào đường dẫn, ta làm theo bước mà bạn cần thực để làm điều ấy: Nhấn chuột phải vào dự án Intro vùng làm việc bạn, sau chọn Properties Trong hộp thoại Properties, chọn phiếu Libraries Bạn thấy nút Add JARs Add External JARs , bạn dùng nút để đặt tệp JAR vào Java Build Path Một mã lệnh (ở tệp class) tệp JAR có mặt Java Build Path, bạn dùng lớp mã Java mà không gặp lỗi biên dịch Nếu tệp JAR có tích hợp mã nguồn, bạn kết hợp file mã nguồn với tệp class đường dẫn Sau bạn có trợ giúp mã lệnh chí mở mã lệnh xem Viết mã lệnh Java tốt Giới thiệu mã lệnh Java Bây bạn biết nhiều cú pháp Java, lập trình thực chuyên nghiệp Vậy điều tạo nên chương trình Java “tốt”? Có lẽ số lượng câu trả lời cho câu hỏi nhiều số lập trình viên Java chuyên nghiệp Nhưng có số đề xuất mà tin hầu hết lập trình viên Java chuyên nghiệp đồng ý cải tiến chất lượng mã lệnh Java mà họ xử lý hàng ngày Với chủ tâm bộc lộ hết, phải nói nghiêng ủng hộ phương pháp lanh lẹn (agile) Lập trình đỉnh cao (Extreme Programming - XP), nhiều quan điểm mã lệnh “tốt” nói chung cộng đồng phát triển theo phương pháp lanh lẹn đặc biệt XP công bố Tôi nghĩ hầu hết lập trình viên Java chuyên nghiệp giàu kinh nghiệm đồng ý với điểm mà trình bày phần Hãy giữ cho lớp nhỏ gọn Chúng ta xây dựng lớp Adult đơn giản tài liệu Thậm chí sau chuyển phương thức main() sang lớp khác, Adult 100 dòng mã lệnh Lớp có tới hai mươi phương thức, thực không làm nhiều so sánh với nhiều lớp bạn thấy (hay tạo ra) hoạt động nghề nghiệp Đây lớp nhỏ Không có bất thường bạn thấy có lớp có từ 50 đến 100 phương thức Điều khiến cho bạn nghĩ tệ ? Chẳng có Điều quan trọng phương thức bạn có bạn cần Nếu bạn cần vài phương thức trợ giúp, chất thực việc nhận tham số khác (như phương thức addMoney() chẳng hạn), lựa chọn hay Hãy đảm bảo hạn chế danh sách phương thức bạn cần đừng thêm Thông thường, lớp có nhiều phương thức có vài phương thức không thuộc danh sách đối tượng khổng lồ làm nhiều thứ Trong Tái cấu trúc (Refactoring, xem Các tài nguyên), Martin Fowler gọi điều có mùi mã phương thức ngoại lai (Foreign Method code smell) Nếu bạn có đối tượng với 100 phương thức, bạn nên suy nghĩ kỹ việc liệu đối tượng có phải thực nhiều đối tượng hay không Trong trường học lớp đông thường gây phiền toái Điều xảy mã lệnh Java Hãy giữ cho phương thức nhỏ gọn Các phương thức nhỏ gọn nên ưu tiên giống lớp nhỏ gọn với lý tương tự Một lời phàn nàn lập trình viên hướng đối tượng giàu kinh nghiệm ngôn ngữ Java cung cấp đống hướng đối tượng không dạy họ cách thực cho tốt Nói cách khác, Java mang lại cho họ đủ rắc rối, dù không nhiều ngôn ngữ C++ Nơi thường thấy điều lớp với phương thức main() dài dằng dặc, phương thức có tên doIt() Nếu bạn nhồi tất mã lệnh vào phương thức lớp điều nghĩa bạn nên làm Ngôn ngữ Java có nhiều gia vị cú pháp nhiều ngôn ngữ hướng đối tượng khác nên cần dài dòng đôi chút, không nên đà Hãy ngẫm nghĩ chốc lát phương thức dài Phải cuộn đến 10 trang hình đầy mã lệnh để luận xảy khiến cho thật khó khăn để hiểu xảy Phương thức làm gì? Bạn cần cốc cà phê bự nghiên cứu vài để hiểu Phương thức nhỏ, chí tý hon bó lệnh dễ tiêu hóa Hiệu suất chạy thi hành lý để viết phương thức nhỏ gọn Khả dễ đọc hiểu phần thưởng thực Điều khiến cho mã lệnh bạn dễ dàng bảo trì dễ thay đổi bạn muốn thêm đặc tính Hãy hạn chế cho phương thức thực việc Hãy đặt tên phương thức phù hợp Mẫu viết mã lệnh hay mà xem qua (và quên nguồn) gọi tên phương thức biểu lộ mục đích Trong hai tên phương thức đây, dễ giải thoáng nhìn qua? a() computeCommission() Câu trả lời thật hiển nhiên Vì vài lý do, nhà lập trình dường không thích đặt tên phương thức dài dòng Tất nhiên tên dài lố bịch bất tiện, tên dài đủ rõ ràng thường lại không lố bịch Tôi chẳng gặp khó khăn với tên phương thức aReallyLongMethodNameThatIsAbsolutelyClear() Vào lúc 3:00 sáng thử tìm hiểu xem chương trình không chạy, gặp phải phương thức có tên a() muốn nện cho trận Hãy dành thêm vài phút để chọn tên gợi tả; có thể, bạn cân nhắc việc đặt tên cho phương thức theo cách thức cho mã lệnh bạn đọc giống lời nói thông thường vậy, chí điều có nghĩa cần thêm phương thức phụ trợ để làm việc Ví dụ, xem xét việc thêm vào phương thức phụ trợ khiến cho đoạn mã lệnh thêm dễ đọc hơn: if (myAdult.getWallet().isEmpty()) { something } Phương thức isEmpty() ArrayList tự có ích, điều kiện logic câu lệnh if lợi từ phương thức hasMoney() Adult sau: public boolean hasMoney() { return !getWallet().isEmpty(); } Sau câu lệnh if đọc giống lời nói thông thường hơn: if (myAdult.hasMoney()) { something } Kỹ thuật đơn giản có lẽ bình thường trường hợp này, lại hữu hiệu mã lệnh trở nên phức tạp Giữ cho số lượng lớp Một nguyên tắc chủ đạo để có thiết kế đơn giản lập trình đỉnh cao (XP) đạt mục tiêu với lớp có thể, không Nếu bạn cần lớp khác, chắn nên thêm vào Nếu thêm lớp khác làm cho mã lệnh bạn đơn giản hay làm cho bạn diễn dịch ý định dễ dàng tiếp tục thêm lớp vào Nhưng chẳng có lý để thêm lớp để có chúng mà Thường bắt đầu dự án bạn có lớp hoàn thành xong xuôi, dĩ nhiên, thường dễ tái cấu trúc mã lệnh bạn thành nhiều lớp tích hợp chúng lại Nếu bạn có lớp có nhiều phương thức, phân tích xem liệu có phải có lớp khác mắc bẫy vào đợi tách hay không Nếu có, tạo đối tượng Trong hầu hết dự án Java tôi, không ngại xây dựng lớp cố gắng giảm số lượng lớp mà không làm cho ý định tường minh Hãy giữ cho số lượng thích Tôi thường viết thích thừa mã lệnh Đọc chúng hệt đọc sách Bây khôn ngoan chút Tất chương trình học tập khoa học máy tính, tất sách dạy lập trình nhiều lập trình viên quen biết khuyên bạn thích cho mã lệnh Trong vài trường hợp, thích thật có ích Nhưng số trường hợp khác chúng lại làm cho việc bảo trì mã lệnh khó thêm Thử nghĩ xem bạn phải làm bạn thay đổi mã lệnh Có thích không? Nếu có, tốt bạn phải thay đổi thích trở nên lỗi thời kinh khủng, thời gian trôi đi, chí chả diễn tả mã lệnh Theo kinh nghiệm tăng gấp đôi thời gian bảo trì bạn mà Quy tắc chủ đạo là: Nếu mã lệnh khó đọc khó hiểu cần phải có thích cần làm cho sáng sủa đủ để không cần thích Có thể dài làm nhiều việc Nếu thế, phải làm cho trở nên đơn giản Có thể khó hiểu Nếu thế, bổ sung thêm phương thức phụ trợ để làm dễ hiểu Thực tế, năm lập trình Java với thành viên đội, đếm số lượng thích viết đầu ngón tay ngón chân Hãy làm mã lệnh bạn sáng sủa hơn! Nếu bạn cần tranh tổng thể hệ thống, thành phần cụ thể làm gì, viết tài liệu ngắn gọn để mô tả Những thích dài dòng thường khó bảo trì, thường chúng không diễn giải ý định bạn tốt phương thức viết chuẩn, nhỏ gọn, nhanh chóng trở nên lỗi thời Đừng phụ thuộc nhiều vào thích Hãy dùng phong cách quán Viết mã lệnh theo phong cách thực vấn đề cần thiết chấp nhận môi trường bạn Tôi chí đến phong cách mà gọi “tiêu biểu” Nó chuyện sở thích cá nhân Ví dụ, dòng lệnh sau làm giật nảy biến đổi đi: public void myMethod() { if (this.a == this.b) { statements } } Vì điều lại làm băn khoăn? Vì cá nhân không ưa kiểu viết mã lệnh thêm loạt dòng mới, mà theo ý kiến tôi, không cần thiết Trình biên dịch Java ghi nhận dòng mã lệnh sau giống vậy, tiết kiệm vài dòng: public void myMethod() { if (this.a == this.b) statements } Không có cách viết “đúng” “sai” Chỉ đơn giản ngắn cách Vậy điều xảy viết mã lệnh với người thích cách ? Chúng trao đổi nó, chọn kiểu dùng sau trung thành với Chỉ có quy tắc nghiêm ngặt quán Nếu người tham gia thực dự án áp dụng phong cách khác nhau, việc đọc mã lệnh khó khăn Hãy chọn kiểu đừng thay đổi Tránh dùng lệnh switch Một vài lập trình viên Java thích dùng lệnh switch Tôi nghĩ lệnh hay, sau nhận switch thực loạt lệnh if, có nghĩa logic điều kiện xuất nhiều nơi mã lệnh Đó lặp lại mã lệnh, không chấp nhận Tại sao? Bởi có mã lệnh giống nhiều vị trí khiến cho mã lệnh khó thay đổi Nếu có lệnh switch nơi muốn thay đổi cách xử lý trường hợp cụ thể phải thay đổi đoạn mã lệnh Bây giờ, bạn tái cấu trúc mã lệnh cho có lệnh switch sao? Tuyệt vời! Tôi không tin có chuyện tệ hại dùng Trong vài trường hợp, dùng switch lại khiến mã lệnh sáng tỏ nhiều lệnh if lồng Nhưng bạn thấy xuất nhiều nơi có vấn đề bạn nên sửa Cách dễ để khỏi vấp phải vấn đề tránh dùng lệnh switch trừ công cụ tốt cho công việc Theo kinh nghiệm điều xảy Hãy để public Tôi để dành lời khuyến cáo gây nhiều tranh cãi đến phút cuối Hãy chuẩn bị tinh thần hít thở thật sâu Tôi tin bạn sai lầm đặt toàn phương thức bạn chế độ truy nhập public Các biến cá thể đặt chế độ protected Dĩ nhiên, nhiều lập trình viên chuyên nghiệp rùng nghĩ đến điều thứ công cộng biến đổi chúng được, cách bất hợp pháp Trong giới mà thứ truy cập công cộng, bạn phải phụ thuộc vào tính nguyên tắc người lập trình việc đảm bảo người truy nhập vào thứ mà họ không nên truy nhập họ không phép Nhưng thực tế lập trình, có điều gây phiền toái muốn truy cập biến hay phương thức mà bạn không nhìn thấy Nếu bạn hạn chế truy cập thứ mã lệnh bạn coi người khác không truy cập được, có lẽ bạn thực đấng toàn Đó giả định nguy hiểm thời điểm Nỗi phiền toái thường lộ bạn dùng mã lệnh người khác Bạn thấy phương thức thực xác bạn muốn làm, lại không cho phép truy cập công cộng Đôi có lý đáng để làm việc việc hạn chế truy nhập có ý nghĩa Thế nhưng, lý để chế độ truy cập không public người viết mã lệnh nghĩ “Chả có cần truy nhập vào cả” Hoặc họ nghĩ “Chẳng cần truy nhập vì…” tiếp theo, lý đủ vững Nhiều người ta sử dụng chế độ private có sẵn Đừng làm Hãy để phương thức public biến protected bạn có lý hợp lý để hạn chế truy nhập Theo dấu chân Fowler Bây bạn biết cách làm để viết mã lệnh Java tốt giữ gìn cho chuẩn mực Cuốn sách hay ngành công nghiệp phần mềm “Tái cấu trúc” Martin Fowler (xem Các tài nguyên) Nó chí hài hước Tái cấu trúc có nghĩa thay đổi thiết kế mã lệnh có mà không làm biến đổi kết Fowler nói “mùi mã lệnh” xin tái cấu trúc, sâu vào chi tiết kỹ thuật khác (hoặc kiểu tái cấu trúc khác nhau) để khắc phục chúng Theo quan điểm tôi, việc tái cấu trúc khả viết mã lệnh kiểm thử trước (code test-first) (xem Các tài nguyên kỹ quan trọng mà lập trình viên vào nghề cần học Nếu người thạo hai, cách mạng hóa ngành công nghiệp Nếu bạn trở nên thành thạo hai kỹ năng, dễ kiếm việc làm, bạn làm kết tốt so với đa số người tìm việc Việc viết mã lệnh Java tương đối đơn giản Viết mã lệnh Java “tốt” lại mẹo mực Bạn tập trung để trở thành người lành nghề Tổng kết Trong tài liệu này, bạn học lập trình hướng đối tượng, khám phá cú pháp Java để giúp bạn tạo đối tượng hữu dụng, hiểu biết IDE giúp bạn kiểm soát môi trường phát triển Bạn tạo đối tượng có khả thực tốt số việc, dĩ nhiên tất việc mà bạn tưởng tượng Nhưng bạn mở rộng hiểu biết theo nhiều cách, bao gồm việc nghiên cứu kỹ Java API khám phá khả khác ngôn ngữ Java qua hướng dấn khác developerWorks Hãy xem phần Các tài nguyên để tìm tài liệu tất vấn đề Ngôn ngữ Java chắn không hoàn hảo; ngôn ngữ có thói tật lập trình viên có ngôn ngữ ưa thích Tuy nhiên, tảng Java công cụ tốt giúp bạn viết nên chương trình chuyên nghiệp chuẩn mực mức yêu cầu cao [...]... bất thường khi bạn nghe một lập trình viên hướng đối tượng nói với đồng nghiệp, “đối tượng Supervisor nói với đối tượng Employee, ‘cho tôi ID của cậu,’” vì anh ta cần những thứ này để gán nhiệm vụ cho Employee Lập trình viên hướng thủ tục có thể nghĩ cách nói chuyện này thật lạ lùng, nhưng nó lại hoàn toàn bình thường đối với lập trình viên hướng đối tượng Trong thế giới lập trình của họ, mọi thứ đều... biên dịch của Java cần biết tìm chúng ở đâu Một lệnh nhập khẩu (import) sẽ cho trình biên dịch biết nơi tìm những lớp bạn cần dùng Ví dụ, nếu bạn muốn dùng lớp ArrayList từ gói java. util, bạn cần nhập khẩu theo cách sau: import java. util.ArrayList; Mỗi lệnh import kết thúc bằng một dấu chấm phẩy (;), giống như hầu hết các câu lệnh trong ngôn ngữ Java Bạn có thể viết bao nhiêu câu lệnh nhập khẩu cũng... thuần túy chủ nghĩa hướng đối tượng tranh luận xem liệu Java là hướng đối tượng hay không, thực sự đây không phải là một lý lẽ mang lại ích lợi Nền tảng Java sẽ giữ vững vị trí của nó Hãy học cách lập trình hướng đối tượng tốt nhất có thể với mã lệnh Java và cứ để những lý lẽ thuần túy chủ nghĩa cho những người khác Ngôn ngữ Java giúp bạn viết chương trình rõ ràng, khá ngắn gọn, dễ bảo trì, điều này là... bạn muốn hay cần dùng các công cụ dòng lệnh, bạn có thể tìm thấy cách sử dụng chúng ở trang Web về công nghệ Java của Sun (xem Các tài nguyên) Lập trình hướng đối tượng với công nghệ Java Giới thiệu Công nghệ Java bao trùm nhiều thứ, nhưng bản thân ngôn ngữ Java lại không lớn lắm Tuy nhiên, trình bày nó bằng ngôn ngữ thông thuờng, lại không phải là nhiệm vụ đơn giản Phần này sẽ không bàn kỹ về ngôn... tảng Java hiểu được Mỗi mẩu trong tên package gọi là một nút (node) Ví dụ, trong gói có tên là java. util.ArrayList, java là một nút, util là một nút và ArrayList là một nút Nút cuối cùng trỏ đến tệp ArrayList .java Các câu lệnh nhập khẩu Tiếp theo là các câu lệnh nhập khẩu, khi bạn định nghĩa một lớp: import packageNameToImport; S Khi đối tượng của bạn sử dụng các đối tượng trong các gói khác, trình. .. tượng này thì nó phải hỏi Theo thuật ngữ lập trình hướng đối tượng, phải gửi một thông điệp đến một đối tượng khác để hỏi về tuổi Theo thuật ngữ Java, phải gọi một phương thức của đối tượng khác để nó trả lại kết quả là tuổi Sự bao gói đảm bảo rằng mỗi đối tượng là khác nhau và chương trình là một cuộc chuyện trò giữa các đối tượng Ngôn ngữ Java cho phép các lập trình viên vi phạm nguyên lý này nhưng... ngôn ngữ Java Bạn có thể viết bao nhiêu câu lệnh nhập khẩu cũng được khi bạn cần cho Java biết tìm tất cả các lớp mà bạn dùng ở đâu Ví dụ, nếu tôi muốn dùng lớp ArrayList từ gói java. util, lớp BigInteger từ gói java. math, tôi sẽ nhập khẩu chúng như sau: import java. util.ArrayList; import java. math.BigInteger; Nếu bạn nhập khẩu nhiều hơn một lớp từ cùng một gói, bạn có thể dùng cách viết tắt để cho biết... nghề nghiệp Ngôn ngữ Java bên dưới cái vỏ ngoài Nền tảng Java hoạt động như thế nào Khi bạn viết mã lệnh bằng ngôn ngữ Java, giống như nhiều ngôn ngữ khác, bạn viết mã nguồn, sau đó bạn biên dịch nó; trình biên dịch kiểm tra mã lệnh của bạn và đối chiếu với các quy tắc cú pháp của ngôn ngữ Nhưng nền tảng Java bổ sung thêm một bước khác nữa ngoài các bước trên Khi bạn biên dịch mã Java, bạn sẽ nhận được... cách là lập trình viên mới vào nghề Các tài liệu hướng dẫn khác (xem Các tài nguyên để nhận được những gợi ý về một số tài liệu này) sẽ trình bày các khía cạnh khác nhau của ngôn ngữ này, các thư viện hữu ích bổ trợ do Sun cung cấp, các tài nguyên khác và thậm chí cả các IDE Chúng tôi sẽ trình bày đầy đủ ở đây cả lời dẫn giải và các ví dụ mã lệnh để bạn có thể bắt đầu viết các chương trình Java và... chính dẫn đến các mã lệnh hướng đối tượng tồi tệ viết bằng ngôn ngữ Java là những lập trình viên mới vào nghề không đặt mình vào môi trường hướng đối tượng ngay từ đầu Các đối tượng có khuynh hướng bị đối xử như một chủ đề phụ thêm (add-on) hay lệ thuộc Thay vào đó, chúng tôi sẽ đan xen việc học cú pháp Java thông qua quá trình học Java hướng đối tượng Bằng cách này, bạn sẽ có được một bức tranh mạch