1. Trang chủ
  2. » Công Nghệ Thông Tin

Tiểu luận Mô hình MVC trong Java

28 3K 30

Đ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

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 336,58 KB

Nội dung

1.Tổng quan về Mô hình MVC. 1.1. Xuất xứ 1.2. Kiến trúc 1.3. ưu ,nhược điểm2.Cách xây dựng hệ thống theo mô hình MVC với 3 cấu trúc( Có ví dụ minh họa): 2.1.Mô hình MVC với thực thể thuần 2.1.Mô hình MVC với thực thể bean 2.3.Mô hình MVC cải tiến

Trang 1

ĐỀ TÀI TÌM HIỂU MÔ HÌNH MVC TRONG JAVA

Môn: Lập trình hướng đối tượng Giảng viên: Nguyễn Mạnh Sơn

Nhóm 10

Lục Thị Linh Nhâm _D12CN1Nguyễn Thị Bình An _D12CN1Phạm Thị Diễm_D12CN4

Hà Nội- 2014

Trang 2

1

Xuất xứ 1

2 Kiến trúc MVC 1

2.1 Khái niệm .2

2.2 Mô hình thực tế .3

2.3 Các mối quan hệ .5

2.3.1 Mối quan hệ giữa View và Controller 5

2.3.2 Mối quan hệ giữa View và Model 5

2.3.3 Quan hệ giữa Model và Controller 6

3 Ưu điểm và nhược điểm 6

3.1.Ưu điểm của MVC 6

3.2.Hạn chế của MVC 8

II Thiết kế hệ thống theo MVC 1 Mô hình MVC dùng thực thể thuần (cổ điển) 8

1.1.Xây dựng Model 9

1.2.Xây dựng View 11

1.3.Xây dựng Control 12

1.4.Hàm main 13

2.Mô hình MVC với thực thể bean 13

2.1.Xây dựng Model 14

2.2.Xây dựng View 16

2.3.Hàm main 18

3 Mô hình MVC cải tiến 18

3.1.Xây dựng Model 19

3.2.Xây dựng View 20

Trang 4

I Tổng quan về MVC

1 Xuất xứ

Sự ra đời của giao diện đồ họa (Graphical User Interface) và lập trình hướng đốitượng (Object Oriented Programming) cho phép lập trình viên làm việc với nhữngthành phần đồ họa như những đối tượng có thuộc tính và phương thức riêng của nó.Không dừng lại ở đó, những nhà nghiên cứu ở Xerox PARC còn đi xa hơn khi cho rađời kiến trúc MVC (viết tắt của Model – View – Controller)

MVC được phát minh tại tại phòng thí nghiệm Xerox Parc ở Palo Altovào nhữngnăm 70của thế kỷ 20, bởi TrygveReenskaug và lần đầu tiên xuất hiện công khai làtrong trình biên dịch Smalltalk-80

Sau đó hầu như không có thông tin nào về MVCtrong một thời gian dài, ngay cảtrong tài liệu Smalltalk-80 Tài liệu quan trọng đầu tiên về MVC được công bố trênMVC là “ACookbookforUsing the Model-View-Controller User InterfaceParadigm inSmalltalk-80”,của Glenn Krasner và Stephen Pope, xuất bản vào tháng 8 – tháng 9 năm

1988

2 Kiến trúc MVC

Hình1.Kiến trúc MVC

Trang 5

2.1 Khái niệm

Ý niệm chính của mô hình MVC là tách biệt phần ánh xạ, lưu trữ và xử lý dữliệu (Model) hoàn toàn với thành phần trình bày giao diện kết quả cho người dùnghay phần giao diện giúp đón nhập nhập xuất cho người dùng (View)

Ngoài ra, việc tách biệt rời rạc giữa Model và View theo phân tích của chúng tađang thể hiện tính uy việt Tuy nhiên, một ứng dụng có rất nhiều Model và nhiềuView, do vậy, mô hình cần có một thành phần lựa chọn và kết nối các thành phầnnày lại với nhau theo cách hiệu quả nhất Controller là một trong những đối tượngđưa ra để đón nhận yêu cầu nhập xuất từ người dùng, xác định model tương ứng vớiview nhập để đưa model xử lý, kết quả xử lý của model sẽ được chuyển đếncontroller để controller xác định view kết xuất để đổ kết quả xử lý và hiển thị chongười dùng

Mô hình Model-View-Control chia các components của ứng dụng thành 3 loạikhác nhau đó là Model (mẫu), View (hiển thị), Control (điều khiển) Các componentscủa mô hình MVC đảm nhiệm một trách nhiệm nhất định và mỗi components đều độclập với components khác.Việc thay đổi một components sẽ không ảnh hưởng hoặc ảnhhưởng rất ít đến các components khác Nhiệm vụ của các components này là:

các thông tin đó ở nơi chứa dữ liệu Tất cả các Business Logic đều được thực thi ởModel Dữ liệu được nhập vào bởi người sử dụng qua View sẽ được kiểm tra ở Modeltrước khi được lưu vào cơ sở dữ liệu Truy xuất dữ liệu,sự hợp lệ của dữ liệu và datasaving logic là các thành phần của Model

o Là các thành phần hỗ trợ ánh xạ dữ liệu vật lý lên bộ nhớ, lưu trữ dữ liệu tạmthời trên bộ nhớ, hỗ trợ các cách thức xử lý dữ liệu, hỗ trợ khả năng giao tiếp

và trao đổi dữ liệu giữa các đối tượng khác trong bộ nhớ và cơ sở dữ liệu

o Cụ thể là một đối tượng Object trong khái niệm của lập trình hướng đối tượngOOP và mang đầy đủ khái niệm và tính chất của một Object

o Trong ứng dụng Web của Java, Model sẽ là JavaBean hay EnterpriseJavaBean hay Web Service

từ người sử dụng,gửi các yêu cầu tới Controller và hiển thị kết quả đến người sử dụng.HTML, JSPs, các thư viện và các file nguồn là các phần của view components

o Là thành phần hỗ trợ trình bày dữ liệu hay kết quả ra màn hình, hỗ trợ nhậpthông tin từ phía người dùng

Trang 6

o Các thành phần này có khả năng truy cập Model, truy xuất Model thông quanhững hành vi mà Model cho phép nhưng View không thể thay đổi các thànhphần trong Model.

o Trong mô hình ứng dụng Web thì html, servlet, jsp … là những thành phầnđại diện cho View

trách nhiệm nhận các yêu cầu từ Client Khi mà yêu cầu được nhận từ Client,Controller

sẽ thực thi business logic thích hợp từ Model và sau đó xuất dữ liệu ra user sử dụngView components ActionServlet, Action và ActionForm và struct-config.xml là cácthành phần của Controller

o Là các thành phần hỗ trợ kết nối người dùng server, đón nhập yêu cầu ngườidùng, thực hiện chuyển xử lý, lựa chọn và cập nhật model và view tương ứng

để trình bày về phía người dùng

o Hỗ trợ kết nối giữa người model và view, giúp model xác định được viewtrình bày

o Trong mô hình ứng dụng Web thì Servlet đóng vai trò của Controller

2.2 Mô hình thực tế

Có thể lấy ví dụ như khi bạn xem phim truyền hình thì Model trong trường hợp này

là đầu đĩa, màn hình tivi đóng vai trò là View còn Controller chính là remote để bạnđiều khiển chuyển kênh, tăng giảm âm lượng…

Hay như khi các bạn thao tác trên điện thoại: View là màn hình điện thoại,Controller là các nút bấm và Model là các chíp xử lý bên trong

Để hiểu rõ hơn về mô hình MVC này, xin đưa ra một mô hình thực tế tiếp cận kháiniệm của mô hình này như sau: Mô hình tiếp cận về việc công việc hàng ngày chúng tathường làm để giải trí, đó là xem truyền hình

CD/DVD trên truyền hình của nhà A

A

nhận hàng loạt các đĩa – tối đa là 5 cái, do vậy muốn kích hoạt và chọn đĩa xem Abắt buộc phải sử dụng remote control – điều khiển từ xa

Trang 7

• Như vậy, chúng ta sẽ nhận thấy cách thức A xem phim như sau

đó là vẫn dùng đồ điều khiển để chọn đĩa và đầu đĩa đưa dữ liệu lên truyềnhình và A thấy …

Mô hình tiếp cận được mô tả như hình vẽ sau

Hình 2.Mô hình MVC khi A xem phim

cần thiết, nghĩa là đầu máy đóng vai trò là Model

Trang 8

o Tivi chỉ làm nhiệm vụ duy nhất để trình bày kết quả mà đầu máy –Model đã thực hiện, được lựa chọn Tivi không thể lựa chọn và không có cáchchọn lựa là trình bày các thành phần truyền đến đã được xử lý Tivi đóng vaitrò là View.

khiển remote, ngoài ra remote cũng là nơi kết nối người dùng với đầu máy vớitivi Chức năng của điều khiển là chọn đúng model để đưa ra view Remoteđóng vai trò là Controller

thay đổi không ảnh hưởng gì đến toàn hệ thống

không ảnh hưởng gì lớn

phân chia công việc và các xử lý công việc

2.3.1 Mối quan hệ giữa View và Controller

 Trong MVC truyền thống,các view và controller được kết hợp chặt chẽ với nhau Mỗiview được kết hợp với một controller duy nhất Controller được xem như một Strategy(sự quản lý) mà view sử dụng cho đầu vào View cũng chịu trách nhiệm tạo ra cáckhung nhìn và controller mới

 Có sự logic cho rằng các khung nhìn và các controller có quan hệ chặt chẽ vớinhau.Hầu hết các nền GUI MVC,view và controller được trộn trong một đối tượng haycòn được gọi là Document view: View và controller được kết hợp thành view, Modeltrở thành một tài liệu

 Passive Model luân phiên chịu trách nhiệm nhiều hơn so với controller,vì nó phảithông báo cho các view khi có sự cập nhật

 MVC luân phiên hiện đại tỏ ra hữu ích hơn nhiều so với MVC truyền thống về việcchịu trách nhiệm của View đến Controller trong thiết kế web Controller chịu tráchnhiệm tạo ra và lựa chọn các View và View hướng dẫn đến việc chịu trách nhiệm íthơn đối với các Controller của nó

Trang 9

2.3.2 Mối quan hệ giữa View và Model

Giữa Model và View trên khái niệm, đối tượng nào phụ thuộc đối tượngnào?

o View lệ thuộc vào Model bởi vì khi các tổ chức interface củaModel thay đổi nghĩa là View phải thay đổi theo

o Chúng ta tránh nhầm lẫn về khái niệm ở trên là tách biệtgiữa View và Model là có lợi nhưng tại sao ở đây View lại lệthuộc Model? Khái niệm của chúng ta ở đây đó là tách biệt

dữ liệu và thành phần xử lý bên trong, hệ thống sẽ trở nênuyển chuyển khi chúng ta thành đổi thành phần cài đặttrong Model, không phải thay đổi interface Model Và kháiniệm trên đã nêu rõ giữa dữ liệu vật lý và dữ liệu được chứatrong Model

 View phụ thuộc vào Model Các sự thay đổi đối với giao diện Model đòi hỏi các sựthay đổi song song trong View

 Không có sự tách biệt rõ ràng giữa Model và View

Model chuyển dữ liệu ra và dữ liệu được chuyển vào View để tác nghiệp một cách

dễ dàng

2.3.3 Quan hệ giữa Model và Controller

• Dựa trên bản chất của MVC, khái niệm và cách tiếp cận chúng tanhận thấy mối quan hệ giữa controller và model là như thế nào?Giữa Controller và Model, đối tượng nào phụ thuộc đối tượng nào?

o Ý tưởng đó là khi chúng ta thay đổi đầu máy đọc, remote

có thay đổi theo hay không? Hay chúng ta vẫn dùngremote cũ (không tính khái niệm điều khiển đa năng)?remote được thiết kế dựa trên đầu máy hay đầu máy đượcthiết kế dựa trên đồ điều khiển?

o Câu trả lời chúng ta quá rõ ràng, đó là controller phụ thuộcvào model bởi vì controller được thiết kế đề kết nối vớimodel, điều khiển, truy xuất model Do vậy, model có sựthay đổi là controller phải thay đổi theo để có thể truy xuất

và điều khiển model cho phù hợp

Controller phụ thuộc vào Model Các sự thay đổi đối với giao diện Model có thểyêu cầu sự thay đổi song song đối với Controller

Trang 10

3.1 Ưu điểm của MVC

o Tính linh hoạt và uyển chuyển cao: Cho phép người lập trình cóthể tách biệt công việc trong quá trình xây dựng chức năng choứng dụng và quá trình xây dựng giao diện cho người dùng, thểhiện tính chuyên nghiệp trong lập trình, phân tích thiết kế giúpphát triển ứng dụng nhanh hơn

Cho phép việc thay đổi thành phần của dữ liệu (Model) sẽkhông ảnh hưởng nhiều đến giao diện của người dùng

Vì mô hình đưa ra Model để không cho người dùng thao tác trực tiếp vào dữ liệu vật lý (Cơ sở dữ liệu hay là tập tin) mà phải thông qua Model, do vậy cho dù dữ liệu vật lý thay đổi cấu trúc nhưng cấu trúc Model cho việc truy cập, xử lý, lưu trữ dữ liệu sẽ không bị ảnh hưởng Nhìn theo khái niệm các thành phần giao tiếp trên Model là tên hàm – tham số truyền (interface) ít khi thay đổi, nội dung thay đổi chính là cách thức cài đặt bên trong hàm Nhưng nội dung đó người sử dụng chức năng trên giao diện không quan tâm vì đa số họ chỉ quan tâm interface

là gì, giá trị nhập và kết xuất ra sao

o Tính tin cậy (reliability): việc chia từng phần riêng biệt giúp

chúng ta sửa đổi từng thành phần riêng biệt, không ảnh hưởng, cóthể thay thế thành từng phần tương đương, có thể chia công việctheo nhóm, biên dịch độc lập, tăng cường khả năng tích hợp vớikhả năng đúng đắn cao

o Tính tương thích cao (compatibility): có khả năng sử dụng các

loại công nghệ khác nhau không lệ thuộc vì chúng ta đã được táchbiệt và khái niệm cho từng loại thành phần riêng biệt

có thể được hiển thị bởi biểu đồ bar, hay biểu đồ pie, hoặc spreadsheet

 Các thành phần hợp thành giao diện người sử dụng

Trang 11

 Bởi vì MVC đòi hỏi giao diện người sử dụng ứng dụng được cấu trúc thành các đốitượng kế thừa nhau và định nghĩa các quan hệ chuẩn giữa các đối tượng này nên chúng

sẽ có phiên bản chung

Controller thành một đối tượng đơn WACT là một ví dụvề việc đưa ra 1 tập các thànhphần phong phú tương tự nhau đối với việc phát triển web mà duy trì được sự tách biệtgiữa View và Controller Các thành phần thúc đẩy sự sử dụng lại và cắt giảm sự cầnthiết đối với các lớp con đặc biệt Các thành phần này được biết đến như là các View

có khả năng cắm vào trong smalltalk MVC

Nhiều View khác nhau có thể hoạt động tại cùng một thời điểm Mỗi View mô tảđồng thời và độc lập thông tin giống nhau từ 1 Model Điều này áp dụng nhiều đối vớiGUI MVC hơn là web MVC

 Cơ chế truyền sự thay đổi đảm bảo rằng tất cả các khung nhìn có thể được phản ứngmột cách đồng thời trạng thái hiện tại của Model

 Dễ dàng hơn trong việc thay đổi giao diện người sử dụng

 Giúp dễ dàng kiểm thử chức năng chính của ứng dụng vì nó được đóng gói vào Model3.2 Hạn chế của MVC

 Gia tăng độ phức tạp:

Đối với những dự án nhỏ, áp dụng mô hình MVC gây cồng kềnh, tốn thời giantrong quá trình phát triển

Tốn thời gian trung chuyển dữ liệu giữa các thành phần

 Sự kết nối chặt chẽ của view và controller với model

 Sự thay đổi đối với giao diện model đòi hỏi sự thay đổi song song trong view và có thểđòi hỏi sự thay đổi thêm đối với controller Sự thay đổi code nào đó có thể trở nên khókhăn hơn

 Sự tách biệt rõ ràng là rất khó, đôi khi là không thể

Trang 12

 Tiềm ẩn sự cập nhật dư thừa: Cơ chế truyền sự thay đổi có thể không hiệu quả khiModel thay đổi thường xuyên đòi hỏi nhiều thông báo thay đổi Khi sử dụng passiveModel sẽ giải quyết được vấn đề này.

II Thiết kế hệ thống theo MVC

Có thể áp dụng một số dạng mô hình MVC phổ biến:

 Mô hình MVC dùng thực thể thuần (cổ điển)

 Mô hình MVC cải tiến (hiện đại)

1 Mô hình MVC dùng thực thể thuần (cổ điển)

- Đặc trưng:

 Lớp thực thể chỉ chứa các thuộc tính và các phương thức get/set cho mỗi thuộc tính (còn gọi là các lớp thực thể thuần)

 Các thao tác liên quan đến dữ liệu đều đặt trong lớp điều khiển

Ví dụ: Chương trình thực hiện các phép tính với 2 số nguyên

Chức năng tính toán của Caculator theo MVC cải tiến:

 Khi nút tổng, hiệu, tích hoặc thương trên form của lớp View bị

click thì lớp View bắt sự kiện ,cập nhật dữ liệu ở Model rồi truyền dữ liệu này cho Control

 Trên lớp Control thực hiện thao tác tính toán

 View hiển thị kết quả tính toán đã thực hiện ở Control

Trang 14

private JButton cong, tru, nhan, chia;

private JLabel soa, sob, kqua;

private JTextField ain, bin, res;

private JPanel panel1 = new JPanel();

Trang 15

private void initComponents(){

cong = new JButton(" Tổng "); cong.setSize(4, 15);

tru = new JButton(" Hiệu "); tru.setSize(15, 15);

nhan = new JButton(" Tích "); nhan.setSize(4, 15);

chia = new JButton("Thương"); chia.setSize(4, 15);

cong.addActionListener(this);

tru.addActionListener(this);

nhan.addActionListener(this);

chia.addActionListener(this);

soa = new JLabel("Nhập số a:");

sob = new JLabel("Nhập số b:");

kqua = new JLabel("Kết quả:");

ain = new JTextField(10);

bin = new JTextField(10);

res = new JTextField(10);

panel1.add(soa); panel1.add(ain);

panel1.add(sob); panel1.add(bin);

panel1.add(kqua); panel1.add(res);

panel1.add(cong); panel1.add(tru);

panel1.add(nhan); panel1.add(chia);

Object bam = ae.getSource();

Caculator cal=new Caculator();

cal.setA(Long.parseLong(ain.getText()));

cal.setB(Long.parseLong(bin.getText()));

if(bam == cong) cal.setToantu('+');

if(bam == tru) cal.setToantu('-');

if(bam == nhan) cal.setToantu('*');

Trang 16

res.setText(con.tinhtoan(cal)+" ");

public class MAIN {

public static void main(String[] args) {

View view=new View();

 Lớp thực thể chứa các thuộc tính và các phương thức get/set cho mỗi thuộc tính,

và các thao tác liên quan đến dữ liệu mà liên quan đến lớp thực thể nào thì đều đặt trong lớp điều khiển đó Các lớp thực thể kiểu này được gọi là lớp bean

Ngày đăng: 30/10/2014, 08:31

HÌNH ẢNH LIÊN QUAN

Hình 2.Mô hình MVC khi A xem phim. - Tiểu luận  Mô hình MVC trong Java
Hình 2. Mô hình MVC khi A xem phim (Trang 7)
Hình 4. Sơ đồ - Tiểu luận  Mô hình MVC trong Java
Hình 4. Sơ đồ (Trang 17)

TỪ KHÓA LIÊN QUAN

w