Bài giảng lập trình hướng đối tượng phần 2 ths nguyễn mạnh sơn

152 246 0
Bài giảng lập trình hướng đối tượng  phần 2   ths  nguyễn mạnh sơn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CHƯƠNG LẬP TRÌNH GIAO DIỆN TRÊN JAVA Nội dung chương tập trung trình bày vấn đề liên quan đến lập trình giao diện, với hỗ trợ số đối tượng cung cấp sẵn Java:  Lập trình giao diện với đối tượng với đối tượng multimedia  Lập trình giao diện với HTML&Applet  Lập trình giao diện với SWING 6.1 GIAO DIỆN VỚI CÁC ĐỐI TƯỢNG CƠ BẢN Trong mục này, tìm hiểu sử dụng đối tượng lập trình giao diện Java:  Các đối tượng khung chứa (container) bản: Frame, Panel, Dialog  Các đối tượng thành phần (component) bản: Button, Label, TextField, TextArea IT  Các kiện đối tượng Muốn sử dụng đối tượng này, cần thêm lệnh sử dụng thư viện awt Java: import java.awt.*; T 6.1.1 Các đối tượng container  add(Object): P Các đối tượng container dùng để chứa đối tượng thành phần khác Các lớp đối tượng có số phương thức chung sau: Thêm đối tượng (kiểu component) vào container  remove(Object): Loại bỏ đối tượng khỏi container  removeAll(): Loại bỏ tất đối tượng mà container chứa  getComponent(int): Trả đối tượng thành phần có số tham số đầu vào Container quản lí đối tượng chứa dạng mảng Chỉ số thành phần số thứ tự thành phần thêm vào container  getComponents(): Trả mảng tất đối tượng mà container chứa  countComponents(): Trả số lượng đối tượng mà container chứa Frame Frame đối tượng dùng cách độc lập, gắn vào đối tượng khác đối tượng conponent bình thường Thông thường, Frame dùng cửa sổ chương trình độc lập Các phương thức lớp Frame:  Frame(): Khởi tạo không tham số 135  Frame(String): Khởi tạo với tham số dòng tiêu đề frame  setSize(int, int): Định kích cỡ frame, tham số tương ứng chiều rộng chiều cao frame  setVisible(boolean): Cho phép frame xuất hay ẩn hình  setTitle(String)/getTitle(): Truy nhập thuộc tính dòng tiêu đề frame  setResizable(boolean): Thiết lập thuộc tính cho phép thay đổi kích cỡ frame  setIconImage(Image): Thiết lập ảnh icon góc (biểu tượng) frame Chương trình 6.1 minh hoạ việc sử dụng đối tượng lớp Frame Chương trình 6.1 package vidu.chuong6; import java.awt.*; public class FrameDemo{ public static void main(String[] args) { IT // Khai báo khởi tạo frame có tiêu đề Frame myFrame = new Frame(“This is my Frame!”); // Định kích cỡ frame myFrame.setVisible(true); // Hiển thị frame } P } T myFrame.setSize(300,150); Hình 6.1: Kết demo Frame Panel Panel dang khung chứa, đơn giản Panel dùng để nhóm đối tượng giao diện với Thông thường, panel dùng cửa sổ Frame ứng dụng khác Các phương thức lớp Panel, phương thức chung container:  Panel(): Khởi tạo không tham số Chương trình 6.2 minh hoạ việc sử dụng Panel Frame Chương trình 6.2 136 package vidu.chuong6; import java.awt.*; public class PanelDemo{ public static void main(String[] args) { // Khai báo khởi tạo frame có tiêu đề Frame myFrame = new Frame(“Frame has a panel!”); myFrame.setSize(300,150); // Định kích cỡ frame Panel myPanel = new Panel();// Khai báo panel myFrame.add(myPanel); // Thêm panel vào frame myFrame.setVisible(true); // Hiển thị frame } IT } Hình 6.2: Kết demo Panel Dialog T Dialog đối tượng cửa sổ cửa sổ chương trình Do vậy, Dialog sử dụng kèm với Frame Có hai dạng Dialog: P  Modal: Khi sổ dialog, cửa sổ khác chương trình bị khoá lại, không thao tác được, thao tác cửa sổ dialog  Non-modal: Không khoá cửa sổ khác Khi dialog xuất hiện, người dùng chuyển sang thao tác cửa sổ khác, cần Các phương thức lớp Dialog:  Dialog(Frame, boolean): Khởi tạo dialog, tham số thứ frame chứa dialog, tham số thứ hai xác định dialog có modal hay không  Dialog(Frame, String, boolean): Khởi tạo dialog, thêm tham số thứ hai dòng tiêu đề dialog  setVisible(boolean): Thiết lập trạng thái hiển thị ẩn dialog hình  setSize(int, int): Định kích cỡ cho dialog, tham số tương ứng chiều rộng chiều cao dialog  setTitle(String)/getTitle(): Truy nhập thuộc tính dòng tiêu đề dialog  setResizable(boolean): dialog Thiết lập thuộc tính cho phép thay đổi kích cỡ 137  setLayout(Layout): Thiết lập chế độ hiển thị đối tượng chứa dialog Chương trình 6.3 minh hoạ việc thêm dialog (đang rỗng, chưa có đối tượng thành phần nào) vào frame Chương trình 6.3 package vidu.chuong6; import java.awt.*; public class DialogDemo{ public static void main(String[] args) { // Khai báo khởi tạo frame có tiêu đề Frame myFrame = new Frame(“Frame has a dialog!”); myFrame.setSize(300,150); // Định kích cỡ frame // Khai báo khởi tạo dialog IT Dialog myDialog = new Dialog(myFrame, “An empty dialog!”, true); myDialog.setSize(300,150); // Định kích cỡ dialog myDialog.setVisible(true); // Hiển thị dialog } P T } Hình 6.3: Kết demo Dialog 6.1.2 Các đối tượng component Các đối tượng component dùng để làm thành phần đối tượng khung chứa, chúng dùng độc lập, mà phải gắn vào đối tượng khung chứa container Label Label (nhãn) đối tượng để hiển thị văn tĩnh, văn mà người dùng thay đổi trực tiếp Các phương thức Label:  Label(): Khởi tạo nhãn rỗng  Label(String): Khởi tạo nhãn với nội dung văn tham số đầu vào 138  Label(String, int): Khởi tạo nhãn có nội dung sẵn, tham số thứ hai xác định cách lề nhãn so với khung chứa, bao gồm {Label.CENTER, Label.LEFT, Label.RIGHT}  setText(String)/getText(): Truy nhập nội dung văn nhãn  setAlignment(int)/getAlignment(): Truy nhập thuộc tính lề nhãn  setFont(Font): Định dạng phông chữ nhãn Chương trình 6.4 minh hoạ việc sử dụng nhãn frame Chương trình 6.4 package vidu.chuong6; import java.awt.*; public class LabelDemo{ public static void main(String[] args) { // Khai báo khởi tạo frame có tiêu đề Frame myFrame = new Frame(“Frame has a label!”); // Định kích cỡ frame IT myFrame.setSize(300,150); // Khai báo khởi tạo label T Label myLabel = new Label(); myLabel.setText(“This is a label!”);//Gán nội dung văn P myLabel.setAlignment(Label.CENTER);// Căn lề myFrame.add(myLabel); // Gắn label vào frame myFrame.setVisible(true); // Hiển thị frame } } Hình 6.4: Kết demo Label TextField TextArea Đây hai đối tượng dùng để biểu diễn văn người dùng thay đổi nội dung văn chứa chúng Điểm khác biệt TextField cho phép dòng văn bản, TextArea cho phép chứa nhiều dòng văn Các phương thức chung hai lớp này: 139  setText(String)/getText(): Truy nhập thuộc tính nội dung văn chứa ô  getSelectedText(): ô Trả chuỗi văn bôi đen (đánh dấu chọn)  getSelectedStart(): (tính từ 0) Trả vị trí kí tự đầu vùng đánh dấu chọn  getSelectedEnd(): từ 0) Trả vị trí kí tự cuối vùng đánh dấu chọn (tính  selectAll(): Đánh dấu chọn toàn văn  setEditable(boolean): Xác định vùng văn edit hay không Các phương thức khác lớp TextField:  TextField(): Khởi tạo ô văn rỗng Khởi tạo ô văn rỗng, độ rộng xác định tham  TextField(String): đầu vào Khởi tạo ô văn có nội dung xác định tham số  TextField(String, int): Khởi tạo vởi nội dung có sẵn, độ rộng xác định IT  TextField(int): số vào  setEchoChar(char)/getEchoChar(): Truy nhập thuộc tính kí tự thay văn ô Thuộc tính dùng ta cần che dấu thông Trả độ rộng ô văn P  getColums(): T tin văn bản, ví dụ, ô gõ mật chương trình Các phương thức khác lớp TextArea:  TextArea(): Khởi tạo vùng văn rỗng  TextArea(int, int): Khởi tạo vùng văn rỗng, kích cỡ (số dòng, số cột) xác định tham số vào  TextArea(String): Khởi tạo vùng văn có nội dung xác định tham số đầu vào  TextArea(String, int, int): Khởi tạo vùng văn với nội dung có sẵn, độ rộng xác định  appendText(String): Thêm đoạn văn vào cuối đoạn văn vùng  insertText(String, int): Chèn đoạn văn vào vị trí xác định (tham số thứ hai) vùng văn  replaceText(String, int, int): Thay đoạn văn vùng, đánh dấu vị trí bắt đầu vị trí kết thúc (tham số thứ hai thứ ba), đoạn văn (tham số thứ nhất) 140  getRows()/getColums(): Trả số dòng/cột vùng văn Chương trình 6.5 minh hoạ việc đặt đối tượng ô văn vùng văn vào frame Chương trình 6.5 package vidu.chuong6; import java.awt.*; public class TextDemo{ public static void main(String[] args) { // Khai báo khởi tạo frame có tiêu đề Frame myFrame = new Frame(“Frame has some texts!”); myFrame.setSize(300,150); // Định kích cỡ frame // Khai báo khởi tạo textField TextField myTextField = new TextField(“A text field!”); // Gắn vào frame IT myFrame.add(myTextField); // Khai báo khởi tạo textArea TextArea myTextArea = new TextArea(5, 40); TextField’s T String str=“The ”+myTextField.getColumns(); columns is: P str += “The TextArea’s size is: ” + myTextArea.getRows() + “*” + myTextArea.getColumns(); myTextArea.setText(str); // Thiết lập nội dung myFrame.add(myTextArea); // Gắn vào frame myFrame.setVisible(true); // Hiển thị frame } } Hình 6.5: Kết demo Text 141 Button Button đối tượng nút lệnh, dùng để thực nhiệm vụ xác định Các phương thức nút nhấn:  Button(String): Khởi tạo nút nhấn với tên xác định nút  setLabel(String)/getLabel(): Truy nhập tên nút nhấn Chương trình 6.6 minh hoạ việc tạo nút nhấn frame Chương trình 6.6 package vidu.chuong6; import java.awt.*; public class ButtonDemo{ public static void main(String[] args) { // Khai báo khởi tạo frame có tiêu đề Frame myFrame = new Frame(“Frame has a button!”); // Định kích cỡ frame IT myFrame.setSize(300,150); // Khai báo khởi tạo button Button myButton = new Button(“Click!”); } myFrame.setVisible(true); // Hiển thị frame T // Gắn vào frame P } myFrame.add(myButton); Hình 6.6: Kết demo Button Tuy nhiên, click vào nút nhấn này, không xảy điều già Lí chưa cài đặt việc xử lí kiện cho nút nhấn Nội dung phần 6.1.3 trình bày việc xử lí kiện cho đối tượng 6.1.3 Các kiện đối tượng Mỗi đối tượng component có số kiện xác định, phát sinh từ đối tượng Java cung cấp số lớp kiện nằm thư gói java.awt.event: import java.awt.event.*; 142 Các lớp kiện đối tượng bao gồm:  ActionEvent: Xuất nút bị click vào, danh sách (list) chọn, menu chọn  ComponentEvent: Xuất component bị thay đổi kích cỡ, vị trí, trạng thái Xuất component có focus  ItemEvent: Xuất menu item chọn bỏ, checkbox list item click vào  WindowEvent: Xuất sổ mở ra, kích hoạt, đóng lại thoát  TextEvent: Xuất giá trị văn đối tượng TextField TextArea bị thay đổi  MouseEvent: Xuất chuột click, di chuyển qua, nhấn xuống thả  KeyEvent: Xuất có đầu vào từ bàn phím IT  FocusEvent:  ActionListener  ComponentListener  FocusListener P  ItemListener T Các giao tiếp cài đặt để xử lí kiện trên:  WindowListener  TextListener  MouseListener MouseMotionListener  KeyListener Khi cài đặt giao tiếp này, cần cài đặt lại phương thức xử lí kiện: public void actionPerformed(){ … // Cài đặt lại mã lệnh } Để xác định kiện phát sinh từ component nào, ta dùng phương thức getSource(): .getSource(); Chương trình 6.7 cài đặt ứng dụng hoàn chỉnh, bao gồm:  Hai nhãn tiêu đề cho hai ô văn  Hai ô văn bản, để nhập số liệu vào 143  Bốn nút nhấn tương ứng để thực thao tác nhân, chia, cộng, trừ số liệu nhập từ hai ô văn  Thêm nút nhấn, click vào thoát khỏi chương trình (chương trình kết thúc) Chương trình 6.7 package vidu.chuong6; import java.awt.*; import java.awt.event.*; public class EventDemo extends Frame implements ActionListener{ Label lbl1, lbl2, lblKq; TextField txt1, txt2; Button btnCong, btnTru, btnNhan, btnChia, btnThoat; public EventDemo(){ IT super(“Event demo!”); this.setLayout(new GridLayout(6,2)); dòng, cột lbl1 = new Label(“So thu nhat:”); T this.add(lbl1); txt1 = new TextField(); //Chế độ hiển thị // Nhãn số thứ // Ô văn số thứ P this.add(txt1); lbl2 = new Label(“So thu hai:”); // Nhãn số thứ hai this.add(lbl2); txt2 = new TextField(); // Ô văn số thứ hai this.add(txt2); lblKq = new Label(); // Nhãn kết this.add(lblKq); this.add(new Label()); // Các nút nhấn btnCong = new Button(“Cong”); // Nút cộng btnCong.addActionListener(this); // Bắt kiện this.add(btnCong); btnTru = new Button(“Tru”); // Nút trừ btnTru.addActionListener(this); this.add(btnTru); 144 } 4.3 JSON Binding Support ASP.NET MVC bao gồm ràng buộc hỗ trợ JSON cho phép phương thức hành động để nhận liệu JSON-encoded modelbind tham số phương thức hành động Khả hữu ích tình liên quan đến client template data binding MVC cho phép bạn dễ dàng kết nối client template với phương thức hành độngtrên máy chủ gởi nhận nhận liệu JSON Model Validation Imporvements 5.1 Thuộc tính siêu liệu “DataAnnotations” IT ASP.NET MVC hỗ trợ thuộc tính siêu liệu DataAnnotations DisplayAttribute 5.2 Lớp “ValidationAttribue” P T Lớp ValidationAttribute cải tiến NET Framerwork để hỗ trợ tải IsValid cung cấp thêm thông tin bối cảnh xác nhận tại, chẳng hạn đối tượng xác nhận Điều cho phép kịch phong phú hơn, nơ bạn xác nhận giá trị dựa thuộc tính khác model Ví dụ, thuộc tính CompareAttribute cho phép bạn so sánh giá trị thuộc tính model Trong ví dụ đây, thuộc tính ComparePassword phải phù hợp với trường Password để hợp lệ: public class User { [Required] public string Password { get; set; } [Required, Compare("Password")] public string ComparePassword { get; set; } } 5.3 Validation Interfaces - Giao diện IValidatableObject cho phép bạn thực cấp model xác nhận, cho phép bạn cung cấp thông điệp xác nhận lỗi cụ 272 thể trạng thái model tổng thể, hay giữ thuộc tính model MVC lấy lỗi từ giao diện IValidatableObject ràng buộc mô hình, từ động gắn cờ hay tô sáng trường bị ảnh hưởng phậm vi view cách sử dụng công cụ hỗ trợ hình thức HTML - Giao diện IClientValidatable cho phép ASP.NET MVC khám phá thời gian chạy dù validator hỗ trợ cho việc xác thực client Giao diện thiết kế để tích hợp với hàng loạt validation frameworks Dependency Injection Imporvements - ASP.NET MVC cung cấp hỗ trợ tốt cho việc áp dụng Dependency Injection (DI) tích hợp với Dependency Injection hay Inversion of Control (IOC) containers Các hỗ trợ cho DI thêm vào: IT oControllers (registering and injecting controller factories, injecting controllers) oViews (registering and injecting view engines, injecting dependencies into view pages) T oAction filters (locating and injecting filters) oModel binders (registering and injecting) P oModel validation providers (registering and injecting) oModel metadata providers (registering and injecting) oValue providers (registering and injecting) - MVC hỗ trợ thư viện Common Service Locator DI container có hỗ trợ thư viện IServiceLocator Nó hỗ trợ giao diện IDpendencyResolver làm cho dễ dàng để tích hợp với DI frameworks 3.4 MVC Phần mô tả tính giới thiệu MVC ASP.NET Cải tiến để mặc mẫu dự án (Enhancements to Default Project Templates) o Các mẫu sử dụng để tạo ASP.NET MVC dự án cập nhật để tạo trang web trông đại hơn: 273 o Ngoài để cải thiện thẩm mỹ, cải thiện chức mẫu Các mẫu sử kỹ thuật dựng hình thích ứng nhìn tốt trình duyệt máy tính để bàn trình duyệt di động mà không cần tùy chỉnh o Để xem render adaptive hoạt động, bạn sử dụng giả lập di động cần cố gắng thay đổi kích thước cửa sổ trình duyệt máy tính để bàn để nhỏ Khi cửa sổ trình duyệt đủ nhỏ, bố trí trang thay đổi o Một phát triển dự án mẫu mặc việc sử dụng JavaScript để cung cấp giao diện người dùng phong phú Đăng nhập Đăng ký liên kết sử dụng template ví dụ cách sử dụng hộp thoại giao diện jQuery để trình bày hình đăng nhập phong phú IT Mẫu dự án di động (Mobile Project Template) o Nếu bạn bắt đầu dự án muốn tạo trang web đặc biệt cho trình duyệt di động máy tính bảng, bạn sử dụng mẫu dự T án ứng dụng di động Điều dựa jQuery Mobile, thư viện mã P nguồn mở để xây dựng tối ưu hoá giao diện cảm ứng cho người dùng o Mẫu có chứa cấu trúc ứng dụng tương tự mẫu ứng dụng Internet (và mã điều khiển giống nhau), mang phong cách sử jQuery Mobile nhìn tốt cư xử tốt thiết bị di động dựa cảm 274 ứng Để tìm hiểu thêm làm để cấu trúc phong cách giao diện người dùng di động, xem trang web dự án jQuery Mobile o Nếu bạn có trang web máy theo định hướng mà bạn muốn thêm vào xem để tối ưu hoá điện thoại di động, bạn muốn tạo trang web phục quan khác theo kiểu trình máy tính để bàn di động, bạn sử dụng tính hiển thị chế độ (Xem phần tiếp theo.) Chế độ hiển thị (Display Modes) o Tính Display Modes cho phép xem ứng dụng chọn tùy thuộc vào trình duyệt đưa yêu cầu Ví dụ, trình duyệt máy tính để bàn yêu cầu trang ‘Home page’, ứng dụng sử dụng Views\Home\Index.cshtml template Nếu trình duyệt di động yêu trang chủ, ứng dụng trả lại Views\Home\Index.mobile.cshtml IT template o Layouts partials ghi đè cho trình duyệt cụ thể o Nếu bạn muốn tạo Views cụ thể, bố trí, phần cho thiết bị khác, T bạn đăng ký thể DefaultDisplayMode để xác định tên để tìm kiếm yêu cầu đáp ứng điều kiện đặc thù Ví dụ, bạn thêm đoạn P mã sau vào phương thức Application_Start file Global.asax đăng ký chuỗi “iPhone” chế độ hiển thị áp dụng trình duyệt iPhone Apple tạo yêu cầu : DisplayModes.Modes.Insert(0, new DefaultDisplayMode("iPhone") { ContextCondition = (context => context.Request.UserAgent.IndexOf ("iPhone", StringComparison.OrdinalIgnoreCase) >= 0) }); Sau chạy mã này, trình duyệt iPhone Apple tạo yêu cầu, ứng dụng bạn sử dụng Views \ Shared \ _Layout.iPhone.cshtml layout (nếu tồn tại) 4.jQuery Mobile, the View Switcher, and Browser Overriding 275 jQuery Mobile thư viện mã nguồn mở để xây dựng giao diện người dùng web cảm ứng tối ưu hóa - Một thành phần view-switcher, bao gồm Views / Shared / _ViewSwitcher.cshtml partial view ViewSwitcherController.cs controller Sau bạn cài gói phần mềm, chạy ứng dụng bạn cách sử dụng trình duyệt di động (hoặc tương đương, Firefox User Agent Switcher add-on) Bạn thấy trang trông khác nhau, jQuery Mobile xử lý layout phong cách Để tận dụng lợi này, bạn làm sau: - Tạo điện thoại di động cụ thể view ghi đè mô tả chế độ hiển thị trước (ví dụ, tạo Views \ Home \ Index.mobile.cshtml để ghi đè lên Views \ Home \ Index.cshtml dành cho trình duyệt điện thoại di động) - Đọc tài liệu jQuery Mobile để tìm hiểu thêm làm để thêm yếu tố giao diện người dùng cảm ứng tối ưu hóa chế độ xem di động IT Một quy ước cho trang web tối ưu hoá điện thoại di động thêm liên kết văn giống chế độ xem Desktop trang web toàn cho phép người chuyển sang phiên máy trang Các gói phần mềm jQuery.Mobile.MVC T bao mẫu view-switcher thành phần cho mục đích Nó sử dụng Views mặc định \ Shared \ _Layout.Mobile.cshtml, trông trang trả lại: P Nếu khách truy cập nhấp vào liên kết, họ chuyển sang phiên máy tính để bàn trang.Bởi layout máy tính để bàn bạn không bao gồm công tắc xem cách mặc định , khách viếng thăm cách để có chế độ di động Để kích hoạt tính này, thêm tham chiếu sau tới _ViewSwitcher tới layout máy tính bạn, cần bên phần tử : @Html.Partial("_ViewSwitcher") - switcher view sử dụng tính gọi Browser Overriding Tính cho phép yêu cầu xử lý ứng dụng bạn thể họ đến từ trình duyệt khác (đại lý người sử dụng) so với họ thực - Browser Overriding tính cốt lõi ASP.NET MVC có sẵn bạn không cài đặt gói jQuery.Mobile.MVC Tuy nhiên, ảnh hưởng đến View bố cục, xem phần lựa chọn – không ảnh hưởng đến tính ASP.NET khác phụ thuộc vào đối tượng Request.Browser 276 Theo mặc định, ghi đè lên người sử dụng đại lý lưu trữ cách sử dụng cookie Nếu bạn muốn để lưu trữ ghi đè lên nơi khác (ví dụ, sở liệu), bạn thay nhà cung cấp mặc định (BrowserOverrideStores.Current) 5.Recipes for Code Generation in Visual Studio (công thức cho hệ Mã Visual Studio) o Bí tính cho phép Visual Studio để tạo giải pháp cụ thể mã dựa bao bì mà bạn cài đặt cách sử dụng NuGet Khung Bí làm cho dễ dàng cho nhà phát triển viết mã hệ bổ sung, bạn sử dụng để thay xây dựng máy phát mã Add Area , Add Controller, Add View Bởi công thức triển khai gói NuGet, họ dễ dàng kiểm tra vào kiểm soát nguồn chia sẻ với IT tất nhà phát triển dự án tự động Họ có sẵn sở cho giải pháp o Hỗ trợ cho công việc điều khiển không đồng o Bây bạn viết phương pháp hành động không đồng phương P công tác T pháp mà trả đối tượng loại công tác Ví dụ, bạn sử dụng Visual C # (hoặc cách sử dụng CTP Async), bạn tạo phương thức hành động không đồng mà trông sau: public async Task Index(string city) { var newsService = new NewsService(); var sportsService = new SportsService(); return View("Common", new PortalViewModel { NewsHeadlines = await newsService.GetHeadlinesAsync(), SportsScores = await sportsService.GetScoresAsync() }); } 277 Trong phương pháp hành động trước đó, gọi đến newsService.GetHeadlinesAsync sportsService.GetScoresAsync gọi không đồng không chặn thread từ thread pool Phương pháp hành động không đồng trả lại trường công việc hỗ trợ timeouts Để thực hủy phương thức hành động bạn, thêm tham số CancellationToken loại chữ ký phương thức hành động Ví dụ sau cho thấy phương thức hành động không đồng mà có thời gian chờ 2500 mili giây hiển thị nhìn TimedOut cho khách hàng thời gian chờ xảy [AsyncTimeout(2500)] [HandleError(ExceptionType = typeof(TaskCanceledException), View = "TimedOut")] public async Task Index(string city, CancellationToken cancellationToken) { var newsService = new NewsService(); return View("Common", new PortalViewModel { IT var sportsService = new SportsService(); T NewsHeadlines = await newsService.GetHeadlinesAsync(cancellationToken), }); KẾT LUẬN P SportsScores = await sportsService.GetScoresAsync(cancellationToken) Ý nghĩa mô hình tách biệt phần ánh xạ, lưu trữ xử lý liệu (model) tách biệt hoàn toàn với thành phần trình bày giao diện kết cho người dùng hay phần giao diện giúp đón nhập nhập xuất cho người dùng (View).Việc tách cho phép người lập trình tách biệt công việc trình xây dựng chức cho ứng dụng trình xây dựng giao diện cho người dùng Bên cạnh đó, MVC cho phép việc thay đổi thành phần liệu (model) không ảnh hưởng nhiều đến giao diện người dùng mô hình đưa Model để không cho người dùng thao tác trực tiếp vào liệu vật lý (Cơ sở liệu tập tin) mà phải thông qua Model, cho dù liệu vật lý thay đổi cấu trúc cấu trúc Model cho việc truy cập, xử lý, lưu trữ liệu không bị ảnh hưởng Nhìn theo khái niệm thành phần giao tiếp Model tên hàm – tham số truyền (interface) thay đổi, nội dung thay đổi cách thức cài đặt bên hàm Nhưng nội dung người sử dụng chức giao diện không quan tâm đa số họ quan tâm 278 interface gì, giá trị nhập kết xuất Do vậy, tính linh hoạt uyển chuyển mô hình MVC Ngoài ra, việc tách biệt rời rạc Model View theo phân tích thể tính ưu việt Tuy nhiên, ứng dụng có nhiều Model nhiều View, vậy, mô hình cần có thành phần lựa chọn kết nối thành phần lại với theo cách hiệu Controller đối tượng đưa để đón nhận yêu cầu nhập xuất từ người dùng, xác định model tương ứng với view nhập để đưa model xử lý, kết xử lý model chuyển đến controller để controller xác định view kết xuất để đổ kết xử lý hiển thị cho người dùng Nhiều view đồng thời chạy model Nhiều view khác hoạt động thời điểm view mô tả đồng thời độc lập thong tin giống từ model Điều áp dụng nhiều GUI MVC web MVC IT Tuy nhiên MVC có điểm trừ như: o Gia tăng phức tạp Sự kết nối chặt chẽ view controller model thay đổi giao diện model đòi hỏi thay đổi song song view T đòi hỏi thay đổi thêm controller Sự thay đổi code trở nên khó khăn hơn.Cơ chế truyền thay đổi không hiệu P model thay đổi thường cuyên đòi hỏi nhiều thông báo thay đổi, vấn đề chung passive model sử dụng o Sự kết nối chặt chẽ view controller Sự tách biệt rõ ràng khó, Mô hình MVC sử dụng rộng rãi giới World Wide Web Hầu tất trang web giới sử dụng mô hình để hoạt động Web văn HTML Việc xử lí để tạo văn HTML ngôn ngữ khác đảm nhiệm (PHP, ASP.NET, JAVA) Để phân biệt thành phần MVC WEB ta hiểu sau: o View: Là Browser hay trình duyệt web người dùng o Controller: văn HTML xuất browser o Model: ngôn ngữ phía server bên (PHP, ASP, JAVA) Database Ngoài lợi ích mà MVC mang lại thể WEB động: o Người dùng thay đổi trình duyệt mà vào web (thay đổi view) 279 o Có thể thay đổi ngôn ngữ Database để xuất view nội dung trước thay đổi P T IT o Thay đổi giao diện web (thay đổi controller) 280 MỤC LỤC GIỚI THIỆU PHẦN NHỮNG KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG CHƯƠNG TỔNG QUAN VỀ CÁCH TIẾP CẬN HƯỚNG ĐỐI TƯỢNG 1.1 PHƯƠNG PHÁP TIẾP CẬN CỦA LẬP TRÌNH TRUYỀN THỐNG 1.1.1 Lập trình tuyến tính 1.1.2 Lập trình cấu trúc 1.2 PHƯƠNG PHÁP TIẾP CẬN HƯỚNG ĐỐI TƯỢNG 1.2.1 Phương pháp lập trình hướng đối tượng IT 1.2.2 Phương pháp phân tích thiết kế hướng đối tượng 10 1.3 SO SÁNH HAI CÁCH TIẾP CẬN .12 1.4 XU HƯỚNG PHÁT TRIỂN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 13 T TỔNG KẾT CHƯƠNG 15 CHƯƠNG 16 P NHỮNG KHÁI NIỆM CƠ BẢN CỦA 16 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 16 2.1 CÁC KHÁI NIỆM CƠ BẢN .16 2.1.1 Đối tượng 16 2.1.2 Lớp đối tượng 17 2.1.3 Trừu tượng hoá đối tượng theo chức 19 2.1.4 Trừu tượng hoá đối tượng theo liệu 20 2.1.5 Khái niệm kế thừa 21 2.1.6 Khái niệm đóng gói .23 2.1.7 Khái niệm đa hình 24 2.2 SO SÁNH LỚP VÀ CẤU TRÚC 25 2.3 THÀNH PHẦN PRIVATE VÀ PUBLIC CỦA LỚP 26 2.4 MỘT SỐ NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 27 2.4.1 C++ 27 281 2.4.2 ASP.NET C#.NET 28 2.4.3 Java 28 TỔNG KẾT CHƯƠNG 29 CÂU HỎI VÀ BÀI TẬP CHƯƠNG 30 PHẦN 31 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI JAVA 31 CHƯƠNG 32 GIỚI THIỆU VỀ JAVA 32 3.1 LỊCH SỬ PHÁT TRIỂN CỦA JAVA 32 3.1.1 Java 32 3.1.2 Đặc trưng ngôn ngữ Java 32 3.1.3 Cài đặt Java 35 3.2 KIẾN TRÚC CHƯƠNG TRÌNH XÂY DỰNG TRÊN JAVA 36 3.2.1 Kiến trúc chương trình Java 36 IT 3.2.2 Chương trình Java 39 3.2.3 Phân tích chương trình 40 3.3 CÁC KIỂU DỮ LIỆU VÀ TOÁN TỬ CƠ BẢN TRÊN JAVA 42 T 3.3.1 Khai báo biến 42 P 3.3.2 Kiểu liệu 42 3.3.3 Các toán tử 44 3.4 CÁC CẤU TRÚC LỆNH TRÊN JAVA 48 3.4.1 Câu lệnh if-else .48 3.4.2 Câu lệnh switch-case .49 3.4.3 Vòng lặp While .51 3.4.4 Vòng lặp do-while 52 3.4.5 Vòng lặp for 53 3.5 CASE STUDY I 54 TỔNG KẾT CHƯƠNG 56 CÂU HỎI VÀ BÀI TẬP CHƯƠNG 57 CHƯƠNG 60 KẾ THỪA VÀ ĐA HÌNH TRÊN JAVA 60 4.1 KẾ THỪA ĐƠN 60 282 4.1.1 Lớp 60 4.1.2 Sự kế thừa 65 4.2 KẾ THỪA BỘI 67 4.2.1 Giao tiếp 68 4.2.2 Sử dụng giao tiếp 69 4.3 LỚP TRỪU TƯỢNG 71 4.3.1 Khai báo 71 4.3.2 Sử dụng lớp trừu tượng 73 4.4 ĐA HÌNH .74 4.4.1 Nạp chồng .75 4.4.2 Đa hình 75 4.5 CASE STUDY II 77 4.5.1 Lớp Human 77 IT 4.5.2 Lớp Person 78 4.5.3 Lớp Employee .79 4.5.4 Chương trình demo .81 T TỔNG KẾT CHƯƠNG 82 CÂU HỎI VÀ BÀI TẬP CHƯƠNG 83 P CHƯƠNG 88 BIỂU DIỄN VÀ CÀI ĐẶT 88 CÁC CẤU TRÚC DỮ LIỆU TRỪU TƯỢNG TRÊN JAVA 88 5.1 PHƯƠNG PHÁP DUYỆT VÀ ĐỆ QUI .88 5.1.1 Các phương pháp duyệt .88 5.1.2 Phương pháp đệ qui .89 5.2 PHƯƠNG PHÁP SẮP XẾP VÀ TÌM KIẾM 89 5.2.1 Các phương pháp xếp .89 5.2.2 Các phương pháp tìm kiếm 91 5.3 NGĂN XẾP VÀ HÀNG ĐỢI 93 5.3.1 Ngăn xếp .93 5.3.2 Hàng đợi 96 5.4 DANH SÁCH LIÊN KẾT 97 5.4.1 Danh sách liên kết đơn 97 283 5.4.2 Danh sách liên kết kép 103 5.5 CÂY NHỊ PHÂN .109 5.6 ĐỒ THỊ 115 5.6.1 Biểu diễn đồ thị 115 5.6.2 Cài đặt đồ thị trọng số 116 5.6.3 Cài đặt đồ thị có trọng số 122 5.7 CASE STUDY III 127 TỔNG KẾT CHƯƠNG 133 CÂU HỎI VÀ BÀI TẬP CHƯƠNG 134 CHƯƠNG 135 LẬP TRÌNH GIAO DIỆN TRÊN JAVA 135 6.1 GIAO DIỆN VỚI CÁC ĐỐI TƯỢNG CƠ BẢN 135 6.1.1 Các đối tượng container 135 6.1.2 Các đối tượng component .138 IT 6.1.3 Các kiện đối tượng .142 6.2 GIAO DIỆN VỚI CÁC ĐỐI TƯỢNG MULTIMEDIA 146 T 6.2.1 Ô đánh dấu nút chọn .146 6.2.2 Lựa chọn 148 P 6.2.3 Danh sách 150 6.2.4 Trình đơn .153 6.3 CÁC KỸ THUẬT TẠO TABLES 156 6.3.1 Trình bày Flow Layout .156 6.3.2 Trình bày Grid Layout 158 6.3.3 Trình bày Border Layout .159 6.3.4 Trình bày GridBag Layout 160 6.3.5 Trình bày Null Layout 163 6.4 HTML & APPLET 164 6.4.1 Cấu trúc Applet .164 6.4.2 Sử dụng applet .166 6.4.3 Truyền tham số cho Applet 169 6.5 GIỚI THIỆU VỀ SWING 170 6.5.1 Mở rộng đối tượng component .171 284 6.5.2 Mở rộng đối tượng container 172 6.6 CASE STUDY IV 175 TỔNG KẾT CHƯƠNG 182 CÂU HỎI VÀ BÀI TẬP CHƯƠNG 183 CHƯƠNG 184 THƯ VIỆN CÁC COLLECTION TRONG JAVA VÀ ÁP DỤNG 184 7.1 Các thành phần Collection 185 7.2 Giới thiệu Collection: 187 7.3 Giới thiệu List cách sử dụng 193 7.4 Giới thiệu Set Interface: .211 7.5 Giới thiệu Map 221 HƯỚNG DẪN TRẢ LỜI CÂU HỎI VÀ BÀI TẬP 231 Chương 231 Chương 231 IT Chương 232 Chương 233 T Chương 236 Chương 237 P TÀI LIỆU THAM KHẢO .242 PHỤ LỤC: GIỚI THIỆU MÔ HÌNH MVC VÀ ÁP DỤNG 243 TỔNG QUAN VỀ MVC .244 1.1.LỊCH SỬ PHÁT TRIỂN MÔ HÌNH MVC 244 1.2 KIẾN TRÚC TRONG MÔ HÌNH MVC 244 1.3.CÁC MỐI QUAN HÊ TRONG MVC 246 1.4 MVC HOẠT ĐỘNG NHƯ THẾ NÀO? .248 1.5.ƯU NHƯỢC ĐIỂM CỦA MÔ HÌNH MVC 249 SO SÁNH MVC VỚI MÔ HÌNH LẬP TRÌNH KHÁC .250 2.1 MVC vs LAYER 250 2.2.MVC vs MOVE .256 CÁC MÔ HÌNH MVC 259 3.1.MVC 1(Page-Centric Architecture) .259 3.2 MVC 2(Servlet-Centric Architecture) 260 285 3.3 MVC 268 3.4 MVC 273 KẾT LUẬN 278 P T IT MỤC LỤC 281 286 [...]... 6.14: Kết quả demo Gridbag layout 6.3.5 Trình bày Null Layout IT Cách trình bày Null Layout sẽ trình bày các đối tượng không theo một quy tắc nào Tất cả đều do người dùng tự định vị và thiết lập kích thước cho mỗi đối tượng  Định vị đối tượng bằng phương thức setLocation(): .setLocation(Point); T  Định kích thước đối tượng bằng phương thức setSize(): .setSize(int, int); P  Ngoài...  Nếu gắn nhiều đối tượng vào cùng một vùng, chỉ có đối tượng gắn sau là nhìn thấy được  Nếu muốn trong một vùng chứa được nhiều đối tượng, ta có thể gắn vào mỗi vùng một Panel Sau đó trong panel, ta chọn cách trình bày riêng cho panel và gắn các đối tượng vào panel Chương trình 6.14 minh hoạ cách trình bày border: Ta sẽ gắn vào năm vùng của frame năm nút nhấn khác nhau 159 Chương trình 6.14 package... 6.3.4 Trình bày GridBag Layout Cách trình bày GridBag Layout cũng trình bày các đối tượng tương tự như Grid Layout: Các đối tượng sẽ được định vị theo vị trí các ô (cell) của một khung lưới (grid) Tuy nhiên, GridBag cho phép ta định kích thước của đối tượng sẽ chiếm bao nhiêu ô và sẽ được đặt ở vị trí nào trong khung lưới Các phương thức cơ bản: 160  GridBagLayout(): Khởi tạo một đối tượng trình bày... chiều cao)  fill: Khởi tạo một đối tượng ràng buộc của GridBag Xác định cách đặt đối tượng, theo 4 cách: - GridBagConstraints.NONE: Đối tượng không thay đổi kích thước theo các IT cell nó chiếm GridBagConstraints.VERTICAL: Đối tượng có chiều cao kín vùng nó chiếm - GridBagConstraints.HORIZONAL: Đối tượng có chiều rộng kín vùng nó chiếm - GridBagConstraints.BOTH: Đối tượng có chiều cao và chiều rộng... (Layout Manager) Bao gồm các kỹ thuật sau:  Cách trình bày theo dòng (Flow layout)  Cách trình bày theo mảng (Grid layout)  Cách trình bày theo Border (Border layout)  Cách trình bày theo GridBag (GridBag layout)  Cách trình bày tự do (Null layout) 6.3.1 Trình bày Flow Layout Cách trình bày Flow Layout sẽ xếp các đối tượng trên một hướng theo dòng Nếu đối tượng mới thêm không đủ chỗ (chiều rộng) thì... GridLayout(int, int, int, int): Khởi tạo một đối tượng trình bày, hai tham số đầu xác định số hàng và số cột trình bày Hai tham số sau Khởi tạo một đối tượng trình bày Hai tham số đầu vào lần lượt là số hàng và số cột của grid trình bày xác định khoảng cách giữa các dòng và các cột của bảng Lưu ý:  Khi số lượng đối tượng được chèn nhiều hơn vào frame, ta muốn chương trình tự tính số hàng, hoặc tự tính số... BorderLayout(): Khởi tạo một đối tượng trình bày theo cách border P Khi một frame được trình bày theo cách border, ta có thể dùng phương thức sau để gắn các đối tượng vào các vùng của frame: .add(, ); Ví dụ: myFrame.add(“Center”, new Button(“Click”)); sẽ gán vào vùng trung tâm của myFrame một nút nhấn có tên là “Click” Lưu ý:  Cách trình bày border luôn... // Khai báo đối tượng demo EventDemo myFrame = new EventDemo(); myFrame.setSize(300,150); // Định kích cỡ frame myFrame.setVisible(true); // Hiển thị frame } } 6 .2 GIAO DIỆN VỚI CÁC ĐỐI TƯỢNG MULTIMEDIA Nội dung phần này sẽ tập trung trình bày các đối tượng multimedia, bao gồm:  Ô đánh dấu (Checkbox) và Nút chọn (Radio button)  Lựa chọn (Choice)  Danh sách (List)  Trình đơn (Menu) 6 .2. 1 Ô đánh dấu... Ngoài ra, có thể vừa định vị, vừa định kích thước cho đối tượng thông qua phương thức: .setBounds(int, int, int, int); Trong đó, hai tham số dầu định vị đối tượng, hai tham số sau định kích thước đối tượng Chương trình 6.16 minh hoạ cách trình bày tự do Null layout: tạo ra hai nút nhấn và gắn vào frame theo hai cách khác nhau Chương trình 6.16 package vidu.chuong6; import java.awt.*; public... của đối tượng component theo các ràng buộc trong gridbagConstraints GridBagConstraints Đây là lớp chứa các ràng buộc cho các đối tượng được trình bày theo cách GridBag Các phương thức và thuộc tính cơ bản của lớp GridBagConstraints:  GridBagConstraints():  gridx/gridy: Vị trí của cell mà ta muốn đặt đối tượng vào (theo chiều X và chiều Y)  gridwidth/gridheight: Kích thước (vùng trình bày) của đối tượng ... 6.1 .2 Các đối tượng component Các đối tượng component dùng để làm thành phần đối tượng khung chứa, chúng dùng độc lập, mà phải gắn vào đối tượng khung chứa container Label Label (nhãn) đối tượng. .. IT Cách trình bày Null Layout trình bày đối tượng không theo quy tắc Tất người dùng tự định vị thiết lập kích thước cho đối tượng  Định vị đối tượng phương thức setLocation(): .setLocation(Point);... phương thức frame: .setMenuBar( ); Menu PopupMenu P T Trình đơn menu đối tượng sổ xuổng click chuột lên đối tượng hiển thị menu Menu gọi menu trình đơn Các phương

Ngày đăng: 03/12/2015, 18:38

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan