Nghiên cứu công nghệ java và tìm hiểu struts framework
Trang 1
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
Tel (84-511) 736 949, Fax (84-511) 842 771Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn
BÁO CÁO THỰC TẬP TỐT NGHIỆP
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115
ĐỀ TÀI : Nghiên cứu Công nghệ Java và Tìm hiểu Struts Framework
SINH VIÊN : Nguyễn Đình Lĩnh
ĐƠN VỊ : Trường Cao Đẳng FPT
… Cô….Huyền
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan :
1 Những nội dung trong báo cáo này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của
thầy Nguyễn Khánh và cô …Huyền 1
2 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên tác giả, tên
công trình, thời gian, địa điểm công bố.
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,tôi xin chịu hoàn
Trang 3LỜI CẢM ƠN
Lời cảm ơn đầu tiên con xin dành cho Ba Mẹ Chúng con xin cảm ơn Ba Mẹ người đã lo cho chúng con , động viên chúng con ăn học nên người và được như ngày hôm nay, công ơn đó chúng con xin ghi khắc trong lòng
Em xin trân trọng cảm ơn thầy Nguyễn Khánh, cô …Huyền cùng các thầy cô trong trường Cao đẳng FPT đã định hướng đề tài và tận tình hướng dẫn, giúp đỡ cũng như đã có những ý kiến đóng góp
bổ ích để giúp em hoàn thành tốt trong đợt thực tập vừa qua
Em xin cảm ơn tất cả quý Thầy Cô trường ĐH Bách Khoa Đà Nẵng đã tận tình dạy dỗ và truyền đạt cho chúng em những kiến thức trong những năm học qua
Nguyễn Đình Lĩnh
Trang 4MỤC LỤC
Trang 5200 tập đoàn công nghệ lớn nhất trên toàn cầu Bên cạnh đó, FPT cũng đang sở hữu trên 1.000 chứng chỉ công nghệ cấp quốc tế của các đối tác công nghệ hàng đầu thế giới.
Đặc biệt, trong chuyến tháp tùng Chủ tịch nước Nguyễn Minh Triết sang Mỹ năm 2007, TGĐ Trương Gia Bình và đoàn đại biểu FPT đã đạt được một bước ngoặt trong quan hệ đối tác chiến lược với Microsoft Theo đó, các Lập trình viên của FPT được tham gia viết các phần mềm cốt lõi của Microsoft cũng như có được sự hỗ trợ của Microsoft trong việc xây dựng Đại học FPT trở thành “Ngôi trường của thế kỷ 21”
Ngay từ năm 1999, nhận thấy nhu cầu nguồn nhân lực chất lượng cao là yếu tố sống còn của việc phát triển Tập đoàn và ngành công nghiệp công nghệ thông tin, FPT đã phối hợp với tập đoàn đào tạo công nghệ thông tin hàng đầu thế giới Aptech Ấn Độ triển khai hệ thống các trung tâm đào tạo Lập trình viên Quốc tế Aptech và Mỹ thuật đa phương tiện Arena tại Việt Nam Qua 10 năm hoạt động, hệ thống hiện đã có gần 40 trung tâm trên toàn quốc và đã đào tạo cho ngành công nghệ
Trang 6Vài nét về Trường Đại học FPT
Ngày 08/09/2006, Chính phủ đã có Quyết định số 208/2006/QĐ-TTg cho phép chính thức thành lậpTrường Đại học Tư thục FPT
Sứ mệnh của Trường Đại học FPT là xây dựng mô hình của một trường Đại học thế hệ mới, có triết
lý giáo dục hiện đại, gắn liền đào tạo với thực tiễn cuộc sống và nhu cầu nhân lực của đất nước, gópphần đưa ngành công nghệ thông tin Việt nam lên ngang tầm các nước tiên tiến trên thế giới
Mục tiêu trước mắt của Trường Đại học FPT là đào tạo và cung cấp nguồn nhân lực chất lượng cao chuyên ngành công nghệ thông tin và các nhóm ngành khác có liên quan cho tập đoàn FPT cũng như cho các tập đoàn công nghệ thông tin toàn cầu tại khắp nơi trên thế giới và các doanh nghiệp Việt Nam
Sự khác biệt của Trường Đại học FPT so với các trường đại học khác là đào tạo kỹ sư công nghiệp, nghĩa là đào tạo theo hình thức liên kết chặt chẽ với các doanh nghiệp công nghệ thông tin, gắn đàotạo với thực tiễn, với nghiên cứu – triển khai và các công nghệ hiện đại nhất Triết lý và phương pháp giáo dục hiện đại; đào tạo con người toàn diện, hài hòa; chương trình luôn được cập nhật và tuân thủ các chuẩn công nghệ quốc tế; đặc biệt chú trọng kỹ năng ngoại ngữ; tăng cường đào tạo quy trình tổ chức sản xuất, kỹ năng làm việc theo nhóm và các kỹ năng cá nhân khác là những điểm
sẽ đảm bảo cho sinh viên tốt nghiệp có những cơ hội việc làm tốt nhất tại tập đoàn FPT và các doanh nghiệp hàng đầu khác
Vài nét về FPT Polytechnic
Hệ Cao đẳng thực hành thuộc Đại học FPT, còn gọi là FPT Polytechnic, được thực hiện đào tạo và cấp bằng Cao đẳng nghề theo Quyết định của Tổng cục dạy nghề bắt đầu từ ngày 01/07/2010 Trường hướng tới mục tiêu cung cấp kỹ năng nghề nghiệp chất lượng cao cho người học, đảm bảo được tính cạnh tranh trong môi trường phát triển ngày càng cao
Với nhận định nền kinh tế Việt Nam đang phát triển mạnh mẽ trong đó có sự đóng góp to lớn từ trên 500.000 doanh nghiệp vừa và nhỏ với từ 10 đến 200 nhân viên FPT Polytechnic nhắm tới mụctiêu cung cấp nguồn nhân lực được đào tạo tốt cho nhu cầu phát triển của không chỉ các doanh nghiệp lớn mà còn cho các doanh nghiệp này
Trang 7Hướng tới người học chung trên toàn Việt Nam, chương trình cao đẳng thực hành của trường được thiết kế dựa trên những kỹ năng thiết yếu nhất để làm việc và tương thích với các hệ thống đào tạo tiên tiến trên thế giới.
2 Cơ cấu tổ chức Đại học FPT
Hội đồng cố vấn
Hội đồng cố vấn của Trường Đại học FPT bao gồm các giáo sư, các nhà khoa học hàng đầu của Việt Nam Ngài Takeo Ogawa, Chủ tịch danh dự và là cựu TGĐ của Công ty Hitachi Software được chọn làm cố vấn cao cấp cho các chương trình đào tạo CNTT bằng tiếng Nhật.
Trách nhiệm của Hội đồng cố vấn là tham gia định hướng và xây dựng chiến lược cho hoạt động của Trường, hỗ trợ Ban giám hiệu trong các công việc nghiên cứu khoa học và hợp tác quốc tế.
Hội đồng Quản trị
Hội đồng quản trị là cơ quan quản lý cao nhất,chịu trách nhiệm trước pháp luật về các hoạt động của Trường Hội đồng quản trị có trách nhiệm ra các quyết định chiến lược, định hướng hoạt động, bổ nhiệm Hiệu trưởng và các vị trí quản lý then chốt của Trường.
Chủ tịch HĐQT Trường Đại học FPT là Phó giáo sư, Tiến sỹ Trương Gia Bình, Chủ tịch HĐQT Tập đoàn FPT Ông tốt nghiệp Tiến sỹ Toán – Lý tại Đại học Tổng hợp Mat-xcơ-va mang tên Lô-mô-nô-xốp (MGU), sáng lập và điều hành FPT, Tập đoàn CNTT số 1 của Việt Nam từ năm 1988 Ông còn là Trưởng khoa Quản trị kinh doanh HSB, Đại học Quốc gia Hà Nội; Chủ tịch Hội doanh nghiệp trẻ Hà Nội; Chủ tịch Hiệp hội phần mềm Việt Nam (VINASA).
Ban Giám hiệu
Ban Giám hiệu của Trường có chức năng điều hành trực tiếp các hoạt động của Trường Hiệu trưởng nhiệm kỳ 2006-2011 của Trường là Tiến sỹ Lê Trường Tùng Ông tốt nghiệp đại học tại khoa Toán, Đại học Tổng hợp Mat-xcơ-va mang tên Lô- mô-nô-xốp (MGU), bảo vệ Luận án Tiến sỹ tại Học viện kỹ thuật quân sự Ông còn là Tổng giám đốc Học viện quốc tế FPT, Chủ tịch Hội tin học TP.Hồ Chí Minh (HCA), Phó Chủ tịch Hội tin học Việt Nam (VAIP), Đại biểu HĐND TP.Hồ Chí Minh
Cơ sở vật chất và điều kiện học tập
Để phục vụ cho định hướng phát triển trong tương lai, Trường Đại học FPT đã và đang đầu tư xây dựng các cơ sở đào tạo với quy mô lớn tại Khu Công nghệ cao Hòa Lạc – Hà Nội với diện tích đất là 30.7ha Các hạng mục xây dựng đầu tiên đang chuẩn bị đi vào hoạt động phục vụ cho năm học 2011-2012.
Khu đô thị Công nghệ FPT Đà Nẵng cũng được dành 28ha cho đào tạo Tại Tp HCM Tòa Nhà Tinh Hoa thuộc quyền sở hữu của Trường với tổng diện tích sử dụng gần 20.000m2 cũng đang gấp rút được đưa vào sử dụng.
Trường luôn chú trọng cải tiến điều kiện cơ sở vật chất để phục vụ hiệu quả cho đào tạo Trường hiện có hơn 140 phòng học multimedia Các lớp học, giảng đường được sử dụng với chức năng như phòng lab, phòng thực hành máy; 100% sinh viên được trang bị laptop để học tập; 100% giảng viên và nhân viên được trang bị máy tính làm việc; Các lớp học được bố trí theo mô hình lớp ít sinh viên, tối đa 30 em/lớp để đảm bảo chất lượng đào tạo; 100% các môn học đều có giáo trình ,các môn học đều có tài nguyên giảng dạy cho giảng viên.
Trang 8Hệ thống thư viện của Trường được cài đặt phần mềm giải pháp Thư viện điện tử Libol 6.0(LIBrary OnLine) Libol 6.0 là sản phẩm phần mềm thư viện điện tử và quản lý tích hợp nghiệp vụ thư viện thành công nhất ở Việt Nam Thư viện giáo trình của Trường hiện 30659 bản cứng với 95 đầu sách được nhập khẩu từ các nhà xuất bản lớn như: Pearson Education, John Wiley, Mc Graw-Hill, Cengage Learning, Macmillan … hoặc in ấn tại Việt Nam với bản quyền đã được mua hoặc đăng ký Thư viện tham khảo truyền thống có 9666 bản với 3342 đầu sách Ngoài ra sách điện tử gồm 02 cơ sở dữ liệu (CSDL) với 10398 đầu tài liệu, trong đó CSDL ITpro có 9222 đầu sách về CNTT và FinalcePro có 1176 đầu sách về kinh tế
Về hạ tầng CNTT: Là một trường đại học đào tạo chuyên sâu về CNTT-TT, Trường Đại học FPT mong muốn tạo một môi trường công nghệ thực sự cho sinh viên Trường hiện có 43 máy chủ; 525 máy PC cho cán bộ giảng viên; 4365 máy laptop cho sinh viên; 171 Asscess point; 109 máy chiếu; 03 hệ thống hội thảo trực tuyến Teleconference; Đường truyền Internet bao gồm Leasedline và FTTH với tổng băng thông 338Mb/s; Hệ thống mạng wifi của Cisco đáp ứng đủ nhu cầu cho khoảng 5000 người; Sinh viên của Trường được cấp email @fpt.edu.vn với dung lượng 7.5Gb để truy cập tài nguyên học tập và thông tin như: Hệ thống quản lý khóa học online (CMS: http://cms.fpt.edu.vn), hệ thống quản lý sinh viên online (AP: http://ap.fpt.edu.vn), hệ thống quản lý thư viện Libol: http://libol.fpt.edu.vn, diễn đàn sinh viên (http://svfpt.net) , phụ huynh được cấp account để xem thông tin online về lịch học, điểm, điểm danh của con em; Hệ thống quản lý thi trực tuyến EOS (Exam Online System) được triển khai cho 35/38 môn học.
Đội ngũ nhà giáo, cán bộ quản lý và nhân viên
STT Nội dung Tổng
Hình thức tuyển dụng Chức danh Trình độ đào tạoHợp
đồng cơ hữu
Hợp đồng thỉnh giảng
Giáo sư
Phó Giáo sư
Tiến sĩ
Thạc sĩ
Đại học
Cao đẳng
Trình độ khác Tổng số giảng viên, cán
bộ quản lý và nhân viên (I+II)
Trang 93 CBNV 381 381 17 251 52 61
Trang 10 Tỷ lệ số sinh viên / giảng viên
• Thực tế: 6,3
• Quy đổi: 8,2
Kiểm định chất lượng giáo dục
• Trường đại học FPT đã triển khai Hệ thống Chất lượng dựa trên chuẩn ISO 9001: 2008 (áp dụng cho các cơ sở đào tạo) và tiêu chuẩn chất lượng Quốc tế ABET (dành cho khối ngành kỹ nghệ).
• Trường đã nhận được chứng chỉ ISO 9001:2008 vào tháng 6/2010, và mục tiêu phấn đấu trong 2-3 năm tới sẽ đạt được chứng nhận của ABET cho ngành Software Engineering.
• Hiện nay trường đã nhận chứng chỉ chất lượng ISO cho các hệ đào tạo Diploma (Aptech, Arena) Việc triển khai kiểm định theo các Tiêu chí của Bộ Giáo dục và Đào tạo được tiến hành song song khi xây dựng hệ thống chất lượng ISO Dự kiến năm 2012 Trường sẽ hoàn thành báo cáo Tự đánh giá trong nội bộ trường và gửi lên Cục Khảo thí và Kiểm định Chất lượng Giáo dục Đại học - Bộ GD&ĐT.
• Về tổ chức, trường đã thành lập Phòng Đảm bảo Chất lượng làm đầu mối thực hiện Trường cũng cử 1 cán bộ sang nghiên cứu tại Mỹ để hỗ trợ triển khai ABET.
3 Chương trình đào tạo
Tổng quan về chương trình đào tạo
Trang 11Sinh viên tại thời điểm có nhập học thể đăng ký theo học hai nhóm ngành cơ bản là Công nghệ thông tin hoặc Kinh tế – Kinh doanh.
Khối ngành Công nghệ thông tin:
Sinh viên hoàn thành giai đoạn đầu của khối ngành.Công nghệ thông tin bao gồm 2 học kỳ sẽ lựa chọnmột trong hai chuyên ngành là Ứng dụng phần mềm hoặc Thiết kế Website trong giai đoạn sau
Khối ngành Kinh tế – Kinh doanh:
Sinh viên hoàn thành giai đoạn đầu của khối ngành Kinh tế – Kinh doanh bao gồm 2 học kỳ sẽ lựa chọn một trong hai chuyên ngành là Kế toán doanh nghiệp hoặc Quản trị doanh nghiệp trong giai
đoạn sau Với khối ngành Quản trị doanh nghiệp sinh viên sẽ được học chuyên sâu theo chuyên đề theo
các chuyên ngành sâu gồm: Marketing & Bán hàng, Quản trị nhân sự & văn phòng, Quan hệ công chúng và truyền thông
Danh mục môn học
Các môn Kỹ năng
• SKI101: Kỹ năng học tập
• SKI201: Kỹ năng nghề nghiệp
• SKI202: Kỹ năng làm việc nhóm
• SKI203: Kỹ năng bán hàng
• SKI204: Kỹ năng đàm phán trong kinh doanh
• SKI205: Kỹ năng tuyển dụng
Các môn Việt Nam
• VIE101: Chính trị
• VIE102: Pháp luật
• VIE103: Giáo dục thể chất
• VIE104: Giáo dục quốc phòng và an ninh
• VIE105: (Soạn thảo) Văn bản hành chính
• VIE106: Kinh tế chính trị
Các môn Tiếng Anh
Trang 12• ENG102: Tiếng Anh 2 (Topnotch 2)
Các môn về máy tính
• COM103: Mạng máy tính và Internet
• COM104: Bảo trì và xử lý sự cố máy tính
• COM202: Cấu trúc dữ liệu và giải thuật
• COM203: Hệ quản trị cơ sở dữ liệu SQL Server
• COM204: Quản trị Server
• COM205: Quản trị cơ sở dữ liệu với Access
• COM302: An toàn và bảo mật thông tin
Các môn về Lập trình Web
• WEB101: Thiết kế website
• WEB102: Quản trị website
• WEB103: Thiết kế Layout website
• WEB104: Lập trình cơ sở với Javascript
• WEB202: Kỹ thuật trình bày nội dung Web
• WEB203: Hệ thống quản trị nội dung Web
• WEB205: Marketing trên Internet
Trang 13• WEB302: Chuyên đề 1 (HTML5 & CSS3.0)
• WEB303: Chuyên đề 2 (Mobile web)
Các môn về Đa phương tiện
• MUL102: Công cụ thiết kế và vẽ đồ họa
• MUL201: Thiết kế đa truyền thông với Flash
Các môn về Hệ thống thông tin
• INF101: Hệ thống thông tin
• INF201: Phân tích thiết kế hệ thống thông tin
• SOF201: Lập trình Windows (Visual Basic NET)
Các môn về Kế toán
• ACC101: Nguyên lý kế toán
• ACC102: Kế toán tài chính 1
• ACC103: Thực hành kế toán tài chính 1
• ACC201: Kế toán tài chính 2
• ACC202: Thực hành kế toán tài chính 2
Trang 14• ACC203: Kế toán quốc tế
• ACC204: Kế toán quản trị
• ACC301: Kế toán tài chính 3
• ACC302: Thực hành kế toán tài chính 3
Các môn về Kinh doanh
• BUS101: Nhập môn quản trị doanh nghiệp
• BUS102: Kinh tế (vi mô + vĩ mô)
• BUS103: Pháp luật kinh tế
• BUS104: Hành vi tổ chức
• BUS201: Phân tích hoạt động kinh doanh
• BUS202: Tâm lý kinh doanh
• BUS203: Kinh doanh quốc tế
• BUS204: Kinh tế thương mại dịch vụ
Các môn về Quản trị
• MAN101: Quản trị văn phòng
• MAN102: Quản trị chuỗi cung ứng
Trang 15• MAN103: Quản trị marketing
• MAN104: Quản trị nhân lực
• MAN201: Quản trị tác nghiệp kinh doanh
Các môn về Marketing
Các môn về Nhân sự
• HUR101: Chính sách và kế hoạch nhân sự
• HUR102: Tổ chức và đào tạo nhân lực
Các môn dự án
• PRO201: Dự án 2 (Ngành Thiết kế web)
• PRO 301: Dự án tốt nghiệp (Ngành Thiết kế web)
• PRO302: Dự án tốt nghiệp (Ngành Ứng dụng phần mềm)
• PRO102: Dự án 1 (Ngành Kế toán doanh nghiệp)
• PRO304: Dự án tốt nghiệp (Ngành Kế toán doanh nghiệp)
• PRO305: Dự án tốt nghiệp (Ngành Marketing&Bán hàng)
• PRO306: Dự án tốt nghiệp (Ngành Nhân sự&Văn phòng
II Nghiên cứu công nghệ Java
Trang 16Tính kế thừa thể hiện quan hệ “is a”, khác với quan hệ “has a” (composition)
Composition: một đối tượng chứa các đối tượng thuộc lớp khác Ví dụ: ôtô có các bánh xe
Cây kế thừa:
1.1 Lớp cơ sở dẫn xuất
Một lớp được xây dựng thông qua kế thừa từ một lớp khác gọi là lớp dẫn xuất (hay còn gọi là lớp con,lớp hậu duệ ), lớp dùng để xây dựng lớp dẫn xuất được gọi là lớp cơ sở ( hay còn gọi là lớp cha, hoặc lớp tổ tiên )
Một lớp dẫn xuất ngoài các thành phần của riêng nó, nó còn được kế thừa tất cả các thành phần của lớp cha
1.2 Xây dựng lớp cơ sở dẫn xuất
Để nói lớp b là dẫn xuất của lớp a ta dùng từ khoá extends, cú pháp như sau:
class b extends a{
// phần thân của lớp b
}
Trang 171.3 Thừa kế thuộc tính
Thộc tính của lớp cơ sở được thừa kế trong lớp dẫn xuất, như vậy tập thuộc tính của lớp dẫn xuất sẽ gồm: các thuộc tính khai báo trong lớp dẫn xuất và các thuộc tính của lớp cơ sở, tuy nhiên trong lớp dẫn xuất ta không thể truy cập vào các thành phần private, package của lớp cơ sở
1.4 Thừa kế phương thức
Lớp dẫn xuất kế thừa tất cả các phương thức của lớp cơ sở trừ:
• Phương thức tạo dựng
• Phương thức finalize
1.5 Khởi tạo lớp cơ sở
Lớp dẫn xuất kế thừa mọi thành phần của lớp cơ, điều này dẫn ta đến một hình dung, là lớp dẫn xuất
có cùng giao diện với lớp cơ sở và có thể có các thành phần mới bổ sung thêm nhưng thực tế không phải vậy, kế thừa không chỉ là sao chép giao diện của lớp của lớp cơ sở Khi ta tạo ra một đối tượng của lớp suy dẫn, thì nó chứa bên trong nó một sự vật con của lớp cơ sở, sự vật con này như thể ta đã tạo ra một sự vật tường minh của lớp cơ sở, thế thì lớp cơ sở phải được bảo đảm khởi đầu đúng, để thực hiện điều đó trọng java ta làm như sau:
Thực hiện khởi đầu cho lớp cơ sở bằng cách gọi cấu tử của lớp cơ sở bên trong cấu tử của lớp dẫn xuất, nếu bạn không làm điều này thì java sẽ làm giúp ban, nghĩa là java luôn tự động thêm lời gọi cấu tử của lớp cơ sở vào cấu tử của lớp dẫn xuất nếu như ta quên làm điều đó, để có thể gọi cấu tử củalớp cơ sở ta sử
dụng từ khoá super
• Trật tự khởi tạo
Trật tự khởi đầu trong java được thực hiện theo nguyên tắc sau: java sẽ gọi
cấu tử của lớp cơ sở trước sau đó mới đến cấu tử của lớp suy dẫn, điều này có
nghĩa là trong cây phả hệ thì các cấu tử sẽ được gọi theo trật tự từ gốc xuống dần
đến lá
• Trật tự dọn dẹp
Mặc dù java không có khái niệm huỷ tử như của C++, tuy nhiên bộ thu rác
của java vẫn hoạt động theo nguyên tắc làm việc của cấu tử C++, tức là trật tự thu
rác thì ngược lại so với trật tự khởi đầu
1.6 Phương thức ghi đè
Hiện tượng trong lớp cơ sở và lớp dẫn xuất có hai phương thức giống hệt nhau ( cả tên lẫn bộ tham số) gọi là ghi đè phương thức ( Override ), chú ý Override khác Overload
Gọi phương thức bị ghi đè của lớp cơ sở
Bên trong lớp dẫn xuất, nếu có hiện tượng ghi đè thì phương thức bị ghi đè của lớp cơ sở sẽ bị ẩn đi,
để có thể gọi phương thức bị ghi đè của lớp cơ sở ta dùng từ khoá super để truy cập đến lớp cha, cú pháp sau:
super.overriddenMethodName();
Chú ý: Nếu một phương thức của lớp cơ sở bị bội tải ( Overload ), thì nó không
thể bị ghi đè ( Override ) ở lớp dẫn xuất
1.7 Thành phần protected
Trang 18Trong một vài bài trước ta đã làm quen với các thành phần private, public, sau khi đã học về kế thừa thì
từ khoá protected cuối cùng đã có ý nghĩa
Từ khoá protected báo cho java biết đây là thành phần riêng tư đối với bên ngoài nhưng lại sẵn sàng với các con cháu
Chú ý:
1) khi đã khai báo một thuộc tính là final thì thuộc tính này la hăng, do vậy ta
không thể thay đổi giá trị của nó
2) khi khai báo một thuộc tính là final thì ta phải cung cấp giá trị ban đầu cho nó
3) nếu một thuộc tính vừa là final vừa là static thì nó chỉ có một vùng nhớ chung
duy nhất cho cả lớp
b. Đối số final
Java cho phép ta tạo ra các đối final bằng việc khai báo chúng như vậy bên trong danh sách đối, nghĩa
là bên trong thân của phương pháp này, bất cứ cố gắng nào để thay đổi giá trị của đối đều gây ra lỗi lúc dịch
Ví dụ sau bị báo lỗi lúc dịch vì nó cố gắng thay đổi giá trị của đối final
Trang 19{
hu ( i );
} }
chương trình này sẽ bị báo lỗi:
"A.java": variable i might already have been assigned to at line 5, column 9
c. Phương thức final
Một phương thức bình thường có thể bị ghi đè ở lớp dẫn xuất, đôi khi ta không muốn phương thức của
ta bị ghi đè ở lớp dẫn xuất vì lý do gì đó, mục đích chủ yếu của các phương thức final là tránh ghi đè, tuy nhiên ta thấy rằng các phương thức private sẽ tự động là final vì chúng không thể thấy được trong lớp dẫn xuất lên chúng không thể bị ghi đè, nên cho dù bạn có cho một phương thức private là final thì bạn cũng chả thấy một hiệu ứng nào
Với tính đa hình, chúng ta có thể thiết kế và thực thi những hệ thống vởi khả năng dễ dàng mở rộng Những lớp mới được thêm có thể chỉnh sửa một ít hoặc không những thành phần chung của chương trình
Tính đa hình thể hiện qua việc: cùng một phương thức nhưng có nội dung thực hiện khác nhau trên các đối tượng khác nhau
Phương thức gọi được xác định thông qua đối tượng được tham chiếu, không thông qua kiểu khai báo của tham chiếu
Trong Java, các phương thức luôn mang tính đa hình
Trang 202.2 Ví dụ về đa hình
Thiết kế hướng đối tượng với UML
3.1 Giới thiệu UML
UML là một ngôn ngữ mô hình hoá thống nhất có phần chính bao gồm những ký hiệu hình học, đượccác phương pháp hướng đối tượng sử dụng để thể hiện và miêu tả các thiết kế của một hệ thống Nó làmột ngôn ngữ để đặc tả, trực quan hoá, xây dựng và làm sưu liệu cho nhiều khía cạnh khác nhau củamột hệ thống có nồng độ phần mềm cao UML có thể được sử dụng làm công cụ giao tiếp giữa ngườidùng, nhà phân tích, nhà thiết kế và nhà phát triển phần mềm
Trong quá trình phát triển có nhiều công ty đã hỗ trợ và khuyến khích phát triển UML có thể kể tới như: Hewlett Packard, Microsoft, Oracle, IBM, Unisys
Ngôn ngữ mô hình hóa thống nhất (Unifield Modeling Language – UML) là một ngôn ngữ để biểu diễn
mô hình theo hướng đối tượng được xây dựng bởi ba tác giả trên với chủ đích là:
Mô hình hoá các hệ thống sử dụng các khái niệm hướng đối tượng
Thiết lập một kết nối từ nhận thức của con người đến các sự kiện cần mô hình hoá
Giải quyết vấn đề về mức độ thừa kế trong các hệ thống phức tạp, có nhiều ràng buộc khácnhau
// Câu lệnh trong main
Trang 21 Tạo một ngôn ngữ mô hình hoá có thể sử dụng được bởi người và máy.
3.2 UML và các giai đoạn phát triển phần mềm
Giai đoạn nghiên cứu sơ bộ:
UML đưa ra khái niệm Use Case để nắm bắt các yêu cầu của khách hàng (người sử dụng) UML sử
dụng biểu đồ Use case (Use Case Diagram) để nêu bật mối quan hệ cũng như sự giao tiếp với hệ thống
Qua phương pháp mô hình hóa Use case, các tác nhân (Actor) bên ngoài quan tâm đến hệ thống sẽđược mô hình hóa song song với chức năng mà họ đòi hỏi từ phía hệ thống (tức là Use case) Các tácnhân và các Use case được mô hình hóa cùng các mối quan hệ và được miêu tả trong biểu đồ Use casecủa UML Mỗi một Use case được mô tả trong tài liệu, và nó sẽ đặc tả các yêu cầu của khách hàng:Anh ta hay chị ta chờ đợi điều gì ở phía hệ thống mà không hề để ý đến việc chức năng này sẽ đượcthực thi ra sao
Giai đoạn phân tích:
Giai đoạn phân tích quan tâm đến quá trình trừu tượng hóa đầu tiên (các lớp và các đối tượng) cũngnhư cơ chế hiện hữu trong phạm vi vấn đề Sau khi nhà phân tích đã nhận biết được các lớp thành phầncủa mô hình cũng như mối quan hệ giữa chúng với nhau, các lớp cùng các mối quan hệ đó sẽ đượcmiêu tả bằng công cụ biểu đồ lớp (class diagram) của UML Sự cộng tác giữa các lớp nhằm thực hiệncác Use case cũng sẽ được miêu tả nhờ vào các mô hình động (dynamic models) của UML Trong giaiđoạn phân tích, chỉ duy nhất các lớp có tồn tại trong phạm vi vấn đề (các khái niệm đời thực) là được
mô hình hóa Các lớp kỹ thuật định nghĩa chi tiết cũng như giải pháp trong hệ thống phần mềm, ví dụnhư các lớp cho giao diện người dùng, cho ngân hàng dữ liệu, cho sự giao tiếp, trùng hợp, v.v , chưaphải là mối quan tâm của giai đoạn này
Giai đoạn thiết kế:
Trong giai đoạn này, kết quả của giai đoạn phân tích sẽ được mở rộng thành một giải pháp kỹ thuật.Các lớp mới sẽ được bổ sung để tạo thành một hạ tầng cơ sở kỹ thuật: Giao diện người dùng, các chứcnăng để lưu trữ các đối tượng trong ngân hàng dữ liệu, giao tiếp với các hệ thống khác, giao diện vớicác thiết bị ngoại vi và các máy móc khác trong hệ thống, Các lớp thuộc phạm vi vấn đề có từ giaiđoạn phân tích sẽ được "nhúng" vào hạ tầng cơ sở kỹ thuật này, tạo ra khả năng thay đổi trong cả haiphương diện: Phạm vi vấn đề và hạ tầng cơ sở Giai đoạn thiết kế sẽ đưa ra kết quả là bản đặc tả chi tiếtcho giai đoạn xây dựng hệ thống
Trang 22 Giai đoạn xây dựng:
Trong giai đoạn xây dựng (giai đoạn lập trình), các lớp của giai đoạn thiết kế sẽ được biến thành nhữngdòng code cụ thể trong một ngôn ngữ lập trình hướng đối tượng cụ thể (không nên dùng một ngôn ngữlập trình hướng chức năng!) Phụ thuộc vào khả năng của ngôn ngữ được sử dụng, đây có thể là mộtcông việc khó khăn hay dễ dàng Khi tạo ra các mô hình phân tích và thiết kế trong UML, tốt nhất nên
cố gắng né tránh việc ngay lập tức biến đổi các mô hình này thành các dòng code Trong những giaiđoạn trước, mô hình được sử dụng để dễ hiểu, dễ giao tiếp và tạo nên cấu trúc của hệ thống; vì vậy, vộivàng đưa ra những kết luận về việc viết code có thể sẽ thành một trở ngại cho việc tạo ra các mô hìnhchính xác và đơn giản Giai đoạn xây dựng là một giai đoạn riêng biệt, nơi các mô hình được chuyểnthành code
Thử nghiệm:
Như đã trình bày trong phần Chu Trình Phát Triển Phần Mềm, một hệ thống phần mềm thường đượcthử nghiệm qua nhiều giai đoạn và với nhiều nhóm thử nghiệm khác nhau Các nhóm sử dụng nhiềuloại biểu đồ UML khác nhau làm nền tảng cho công việc của mình: Thử nghiệm đơn vị sử dụng biểu
đồ lớp (class diagram) và đặc tả lớp, thử nghiệm tích hợp thường sử dụng biểu đồ thành phần(component diagram) và biểu đồ cộng tác (collaboration diagram), và giai đoạn thử nghiệm hệ thống sửdụng biểu đồ Use case (use case diagram) để đảm bảo hệ thống có phương thức hoạt động đúng như đãđược định nghĩa từ ban đầu trong các biểu đồ này
3.3 Các thành phần của ngôn ngữ UML
Ngôn ngữ UML bao gồm một loạt các phần tử đồ họa (graphic element) có thể được kếp hợp với nhau
để tạo ra các biểu đồ Bởi đây là một ngôn ngữ, nên UML cũng có các nguyên tắc để kết hợp các phần
tử đó
Một số những thành phần chủ yếu của ngôn ngữ UML:
Hướng nhìn (view): Hướng nhìn chỉ ra những khía cạnh khác nhau của hệ thống cần phải được mô
hình hóa Một hướng nhìn không phải là một bản vẽ, mà là một sự trừu tượng hóa bao gồm một loạtcác biểu đồ khác nhau Chỉ qua việc định nghĩa của một loạt các hướng nhìn khác nhau, mỗi hướngnhìn chỉ ra một khía cạnh riêng biệt của hệ thống, người ta mới có thể tạo dựng nên một bức tranh hoànthiện về hệ thống Cũng chính các hướng nhìn này nối kết ngôn ngữ mô hình hóa với quy trình đượcchọn cho giai đoạn phát triển
Trang 23Biểu đồ (diagram): Biểu đồ là các hình vẽ miêu tả nội dung trong một hướng nhìn UML có tất cả 9
loại biểu đồ khác nhau được sử dụng trong những sự kết hợp khác nhau để cung cấp tất cả các hướngnhìn của một hệ thống
Phần tử mô hình hóa (model element): Các khái niệm được sử dụng trong các biểu đồ được gọi là
các phần tử mô hình, thể hiện các khái niệm hướng đối tượng quen thuộc Ví dụ như lớp, đối tượng,thông điệp cũng như các quan hệ giữa các khái niệm này, bao gồm cả liên kết, phụ thuộc, khái quáthóa Một phần tử mô hình thường được sử dụng trong nhiều biểu đồ khác nhau, nhưng nó luôn luôn cóchỉ một ý nghĩa và một kí hiệu
Cơ chế chung: Cơ chế chung cung cấp thêm những lời nhận xét bổ sung, các thông tin cũng như các
quy tắc ngữ pháp chung về một phần tử mô hình; chúng còn cung cấp thêm các cơ chế để có thể mởrộng ngôn ngữ UML cho phù hợp với một phương pháp xác định (một quy trình, một tổ chức hoặc mộtngười dùng)
3.4 Hướng nhìn (View)
Mô hình hóa một hệ thống phức tạp là một việc làm khó khăn Lý tưởng nhất là toàn bộ hệ thống đượcmiêu tả chỉ trong một bản vẽ, một bản vẽ định nghĩa một cách rõ ràng và mạch lạc toàn bộ hệ thống,một bản vẽ ngoài ra lại còn dễ giao tiếp và dễ hiểu Mặc dù vậy, thường thì đây là chuyện bất khả thi.Một bản vẽ không thể nắm bắt tất cả các thông tin cần thiết để miêu tả một hệ thống Một hệ thống cầnphải được miêu tả với một loạt các khía cạnh khác nhau: Về mặt chức năng (cấu trúc tĩnh của nó cũngnhư các tương tác động), về mặt phi chức năng (yêu cầu về thời gian, về độ đáng tin cậy, về quá trìnhthực thi, v.v và v.v.) cũng như về khía cạnh tổ chức (tổ chức làm việc, ánh xạ nó vào các codemodule, ) Vì vậy một hệ thống thường được miêu tả trong một loạt các hướng nhìn khác nhau, mỗihướng nhìn sẽ thể hiện một bức ảnh ánh xạ của toàn bộ hệ thống và chỉ ra một khía cạnh riêng của hệthống
Trang 24Hình - Các View trong UML
Mỗi một hướng nhìn được miêu tả trong một loạt các biểu đồ, chứa đựng các thông tin nêu bật khíacạnh đặc biệt đó của hệ thống Trong thực tế khi phân tích và thiết kế rất dễ xảy ra sự trùng lặp thôngtin, cho nên một biểu đồ trên thật tế có thể là thành phần của nhiều hướng nhìn khác nhau Khi nhìn hệthống từ nhiều hướng nhìn khác nhau, tại một thời điểm có thể người ta chỉ tập trung vào một khía cạnhcủa hệ thống Một biểu đồ trong một hướng nhìn cụ thể nào đó cần phải đủ độ đơn giản để tạo điềukiện giao tiếp dễ dàng, để dính liền với các biểu đồ khác cũng như các hướng nhìn khác, làm sao chobức tranh toàn cảnh của hệ thống được miêu tả bằng sự kết hợp tất cả các thông tin từ tất cả các hướngnhìn Một biểu đồ chứa các kí hiệu hình học mô tả các phần tử mô hình của hệ thống UML có tất cảcác hướng nhìn sau:
Hướng nhìn Use case (use case view): đây là hướng nhìn chỉ ra khía cạnh chức năng của một hệ thống,nhìn từ hướng tác nhân bên ngoài
Hướng nhìn logic (logical view): chỉ ra chức năng sẽ được thiết kế bên trong hệ thống như thế nào, quacác khái niệm về cấu trúc tĩnh cũng như ứng xử động của hệ thống
Hướng nhìn thành phần (component view): chỉ ra khía cạnh tổ chức của các thành phần code
Hướng nhìn song song (concurrency view): chỉ ra sự tồn tại song song/ trùng hợp trong hệ thống,hướng đến vấn đề giao tiếp và đồng bộ hóa trong hệ thống
Hướng nhìn triển khai (deployment view): chỉ ra khía cạnh triển khai hệ thống vào các kiến trúc vật lý(các máy tính hay trang thiết bị được coi là trạm công tác)
Khi bạn chọn công cụ để vẽ biểu đồ, hãy chọn công cụ nào tạo điều kiện dễ dàng chuyển từ hướng nhìnnày sang hướng nhìn khác Ngoài ra, cho mục đích quan sát một chức năng sẽ được thiết kế như thếnào, công cụ này cũng phải tạo điều kiện dễ dàng cho bạn chuyển sang hướng nhìn Use case (để xemchức năng này được miêu tả như thế nào từ phía tác nhân), hoặc chuyển sang hướng nhìn triển khai (đểxem chức năng này sẽ được phân bố ra sao trong cấu trúc vật lý - Nói một cách khác là nó có thể nằmtrong máy tính nào)
Ngoài các hướng nhìn kể trên, ngành công nghiệp phần mềm còn sử dụng cả các hướng nhìn khác, ví
dụ hướng nhìn tĩnh-động, hướng nhìn logic-vật lý, quy trình nghiệp vụ (workflow) và các hướng nhìnkhác UML không yêu cầu chúng ta phải sử dụng các hướng nhìn này, nhưng đây cũng chính là nhữnghướng nhìn mà các nhà thiết kế của UML đã nghĩ tới, nên có khả năng nhiều công cụ sẽ dựa trên cáchướng nhìn đó
3.1.1 Hướng nhìn Use case (Use case View):
Trang 25Hướng nhìn Use case miêu tả chức năng của hệ thống sẽ phải cung cấp do được tác nhân từ bên ngoàimong đợi Tác nhân là thực thể tương tác với hệ thống; đó có thể là một người sử dụng hoặc là một hệthống khác Hướng nhìn Use case là hướng nhìn dành cho khách hàng, nhà thiết kế, nhà phát triển vàngười thử nghiệm; nó được miêu tả qua các biểu đồ Use case (use case diagram) và thỉnh thoảng cũngbao gồm cả các biểu đồ hoạt động (activity diagram) Cách sử dụng hệ thống nhìn chung sẽ được miêu
tả qua một loạt các Use case trong hướng nhìn Use case, nơi mỗi một Use case là một lời miêu tả mangtính đặc thù cho một tính năng của hệ thống (có nghĩa là một chức năng được mong đợi)
Hướng nhìn Use case mang tính trung tâm, bởi nó đặt ra nội dung thúc đẩy sự phát triển các hướngnhìn khác Mục tiêu chung của hệ thống là cung cấp các chức năng miêu tả trong hướng nhìn này –cùng với một vài các thuộc tính mang tính phi chức năng khác – vì thế hướng nhìn này có ảnh hưởngđến tất cả các hướng nhìn khác Hướng nhìn này cũng được sử dụng để thẩm tra (verify) hệ thống quaviệc thử nghiệm xem hướng nhìn Use case có đúng với mong đợi của khách hàng (Hỏi: "Đây có phải làthứ bạn muốn") cũng như có đúng với hệ thống vừa được hoàn thành (Hỏi: "Hệ thống có hoạt độngnhư đã đặc tả?”)
3.1.2 Hướng nhìn Logic(Logical View)
Hướng nhìn logic miêu tả phương thức mà các chức năng của hệ thống sẽ được cung cấp Chủ yếu nóđược sử dụng cho các nhà thiết kế và nhà phát triển Ngược lại với hướng nhìn Use case, hướng nhìnlogic nhìn vào phía bên trong của hệ thống Nó miêu tả kể cả cấu trúc tĩnh (lớp, đối tượng, và quan hệ)cũng như sự tương tác động sẽ xảy ra khi các đối tượng gửi thông điệp cho nhau để cung cấp chứcnăng đã định sẵn Hướng nhìn logic định nghĩa các thuộc tính như trường tồn (persistency) hoặc songsong (concurrency), cũng như các giao diện cũng như cấu trúc nội tại của các lớp
Cấu trúc tĩnh được miêu tả bằng các biểu đồ lớp (class diagram) và biểu đồ đối tượng (object diagram).Quá trình mô hình hóa động được miêu tả trong các biểu đồ trạng thái (state diagram), biểu đồ trình tự(sequence diagram), biểu đồ tương tác (collaboration diagram) và biểu đồ hoạt động (activity diagram)
3.1.3 Hướng nhìn thành phần (Component View)
Là một lời miêu tả của việc thực thi các modul cũng như sự phụ thuộc giữa chúng với nhau Nó thườngđược sử dụng cho nhà phát triển và thường bao gồm nhiều biểu đồ thành phần Thành phần ở đây là cácmodul lệnh thuộc nhiều loại khác nhau, sẽ được chỉ ra trong biểu đồ cùng với cấu trúc cũng như sự phụthuộc của chúng Các thông tin bổ sung về các thành phần, ví dụ như vị trí của tài nguyên (trách nhiệmđối với một thành phần), hoặc các thông tin quản trị khác, ví dụ như một bản báo cáo về tiến trình củacông việc cũng có thể được bổ sung vào đây
Trang 263.1.4 Hướng nhìn song song (Concurrency View)
Hướng nhìn song song nhắm tới sự chia hệ thống thành các qui trình (process) và các bộ xử lý(processor) Khía cạnh này, vốn là một thuộc tính phi chức năng của hệ thống, cho phép chúng ta sửdụng một cách hữu hiệu các nguồn tài nguyên, thực thi song song, cũng như xử lý các sự kiện khôngđồng bộ từ môi trường Bên cạnh việc chia hệ thống thành các tiểu trình có thể được thực thi songsong, hướng nhìn này cũng phải quan tâm đến vấn đề giao tiếp và đồng bộ hóa các tiểu trình đó
Hướng nhìn song song giành cho nhà phát triển và người tích hợp hệ thống, nó bao gồm các biểu đồđộng (trạng thái, trình tự, tương tác và hoạt động) cùng các biểu đồ thực thi (biểu đồ thành phần vàbiểu đồ triển khai)
3.1.5 Hướng nhìn triển khai (Deployment View)
Cuối cùng, hướng nhìn triển khai chỉ cho chúng ta sơ đồ triển khai về mặt vật lý của hệ thống, ví dụnhư các máy tính cũng như các máy móc và sự liên kết giữa chúng với nhau Hướng nhìn triển khaigiành cho các nhà phát triển, người tích hợp cũng như người thử nghiệm hệ thống và được thể hiệnbằng các biểu đồ triển khai Hướng nhìn này cũng bao gồm sự ánh xạ các thành phần của hệ thống vàocấu trúc vật lý; ví dụ như chương trình nào hay đối tượng nào sẽ được thực thi trên máy tính nào
3.5 Biểu đồ (diagram)
3.5.1 Biểu đồ Use case (Use Case Diagram)
Một biểu đồ Use case chỉ ra một số lượng các tác nhân ngoại cảnh và mối liên kết của chúng đối vớiUse case mà hệ thống cung cấp (nhìn hình 3.2) Một Use case là một lời miêu tả của một chức năng mà
hệ thống cung cấp Lời miêu tả Use case thường là một văn bản tài liệu, nhưng kèm theo đó cũng cóthể là một biểu đồ hoạt động Các Use case được miêu tả duy nhất theo hướng nhìn từ ngoài vào củacác tác nhân (hành vi của hệ thống theo như sự mong đợi của người sử dụng), không miêu tả chức năngđược cung cấp sẽ hoạt động nội bộ bên trong hệ thống ra sao Các Use case định nghĩa các yêu cầu vềmặt chức năng đối với hệ thống Các biểu đồ Use case sẽ được miêu tả chi tiết hơn trong chương 4(Use case)
Trang 27Hình 3.2- Biểu đồ use case của một công ty bảo hiểm
3.5.2 Biểu đồ lớp (Class Diagram)
Một biểu đồ lớp chỉ ra cấu trúc tĩnh của các lớp trong hệ thống (nhìn hình 3.3) Các lớp là đại diện chocác “vật” được xử lý trong hệ thống Các lớp có thể quan hệ với nhau trong nhiều dạng thức: liên kết(associated - được nối kết với nhau), phụ thuộc (dependent - một lớp này phụ thuộc vào lớp khác),chuyên biệt hóa (specialized - một lớp này là một kết quả chuyên biệt hóa của lớp khác), hay đóng gói (packaged - hợp với nhau thành một đơn vị) Tất cả các mối quan hệ đó đều được thể hiện trong biểu đồlớp, đi kèm với cấu trúc bên trong của các lớp theo khái niệm thuộc tính (attribute) và thủ tục(operation) Biểu đồ được coi là biểu đồ tĩnh theo phương diện cấu trúc được miêu tả ở đây có hiệu lựctại bất kỳ thời điểm nào trong toàn bộ vòng đời hệ thống
Một hệ thống thường sẽ có một loạt các biểu đồ lớp – chẳng phải bao giờ tất cả các biểu đồ lớp nàycũng được nhập vào một biểu đồ lớp tổng thể duy nhất – và một lớp có thể tham gia vào nhiều biểu đồlớp Biểu đồ lớp được miêu tả chi tiết trong chương sau
Trang 28Hình 3.3 - Biểu đồ lớp cho một giao dịch Tài chính
3.5.3 Biểu đồ đối tượng (Object Diagram)
Một biểu đồ đối tượng là một phiên bản của biểu đồ lớp và thường cũng sử dụng các ký hiệu như biểu
đồ lớp Sự khác biệt giữa hai loại biểu đồ này nằm ở chỗ biểu đồ đối tượng chỉ ra một loạt các đốitượng thực thể của lớp, thay vì các lớp Một biểu đồ đối tượng vì vậy là một ví dụ của biểu đồ lớp, chỉ
ra một bức tranh thực tế có thể xảy ra khi hệ thống thực thi: bức tranh mà hệ thống có thể có tại mộtthời điểm nào đó Biểu đồ đối tượng sử dụng chung các ký hiệu của biểu đồ lớp, chỉ trừ hai ngoại lệ:đối tượng được viết với tên được gạch dưới và tất cả các thực thể trong một mối quan hệ đều được chỉ
ra (nhìn hình 3.4)
Biểu đồ đối tượng không quan trọng bằng biểu đồ lớp, chúng có thể được sử dụng để ví dụ hóa mộtbiểu đồ lớp phức tạp, chỉ ra với những thực thể cụ thể và những mối quan hệ như thế thì bức tranh toàncảnh sẽ ra sao Một biểu đồ đối tượng thường thường được sử dụng làm một thành phần của một biểu
đồ cộng tác (collaboration), chỉ ra lối ứng xử động giữa một loạt các đối tượng
Trang 29Hình 3.4 - Biểu đồ lớp và biểu đồ đối tượng thể hiện của lớp
3.5.4 Biểu đồ trạng thái (State Diagram)
Một biểu đồ trạng thái thường là một sự bổ sung cho lời miêu tả một lớp Nó chỉ ra tất cả các trạng thái
mà đối tượng của lớp này có thể có, và những sự kiện (event) nào sẽ gây ra sự thay đổi trạng thái (hình3.5) Một sự kiện có thể xảy ra khi một đối tượng tự gửi thông điệp đến cho nó - ví dụ như để thôngbáo rằng một khoảng thời gian được xác định đã qua đi – hay là một số điều kiện nào đó đã được thỏa
mãn Một sự thay đổi trạng thái được gọi là một sự chuyển đổi trạng thái (State Transition) Một
chuyển đổi trạng thái cũng có thể có một hành động liên quan, xác định điều gì phải được thực hiện khi
sự chuyển đổi trạng thái này diễn ra
Biểu đồ trạng thái không được vẽ cho tất cả các lớp, mà chỉ riêng cho những lớp có một số lượng cáctrạng thái được định nghĩa rõ ràng và hành vi của lớp bị ảnh hưởng và thay đổi qua các trạng thái khácnhau Biểu đồ trạng thái cũng có thể được vẽ cho hệ thống tổng thể Biểu đồ trạng thái được miêu tả chitiết hơn trong chương sau (Mô hình động)
Trang 303.5.5 Biểu đồ trình tự (Sequence Diagram)
Một biểu đồ trình tự chỉ ra một cộng tác động giữa một loạt các đối tượng (xem hình 3.6) Khía cạnhquan trọng của biểu đồ này là chỉ ra trình tự các thông điệp (message) được gửi giữa các đối tượng Nócũng chỉ ra trình tự tương tác giữa các đối tượng, điều sẽ xảy ra tại một thời điểm cụ thể nào đó trongtrình tự thực thi của hệ thống Các biểu đồ trình tự chứa một loạt các đối tượng được biểu diễn bằng cácđường thẳng đứng Trục thời gian có hướng từ trên xuống dưới trong biểu đồ, và biểu đồ chỉ ra sự traođổi thông điệp giữa các đối tượng khi thời gian trôi qua Các thông điệp được biểu diễn bằng các đườnggạch ngang gắn liền với mũi tên (biểu thị thông điệp) nối liền giữa những đường thẳng đứng thể hiệnđối tượng Trục thời gian cùng những lời nhận xét khác thường sẽ được đưa vào phần lề của biểu đồ
Hình 3.6 - Một biểu đồ trình tự cho Print Server 3.5.6 Biểu đồ cộng tác (Collaboration Diagram)
Một biểu đồ cộng tác chỉ ra một sự cộng tác động, cũng giống như một biểu đồ trình tự Thường người
ta sẽ chọn hoặc dùng biểu đồ trình tự hoặc dùng biểu đồ cộng tác Bên cạnh việc thể hiện sự trao đổi
thông điệp (được gọi là tương tác), biểu đồ cộng tác chỉ ra các đối tượng và quan hệ của chúng (nhiều
khi được gọi là ngữ cảnh) Việc nên sử dụng biểu đồ trình tự hay biểu đồ cộng tác thường sẽ đượcquyết định theo nguyên tắc chung sau: Nếu thời gian hay trình tự là yếu tố quan trọng nhất cần phảinhấn mạnh thì hãy chọn biểu đồ trình tự; nếu ngữ cảnh là yếu tố quan trọng hơn, hãy chọn biểu đồ cộngtác Trình tự tương tác giữa các đối tượng được thể hiện trong cả hai loại biểu đồ này
Biểu đồ cộng tác được vẽ theo dạng một biểu đồ đối tượng, nơi một loạt các đối tượng được chỉ racùng với mối quan hệ giữa chúng với nhau (sử dụng những ký hiệu như trong biểu đồ lớp/ biểu đồ đốitượng) Các mũi tên được vẽ giữa các đối tượng để chỉ ra dòng chảy thông điệp giữa các đối tượng.Các thông điệp thường được đính kèm theo các nhãn (label), một trong những chức năng của nhãn làchỉ ra thứ tự mà các thông điệp được gửi đi Nó cũng có thể chỉ ra các điều kiện, chỉ ra những giá trị
Trang 31được trả về, v.v Khi đã làm quen với cách viết nhãn, một nhà phát triển có thể đọc biểu đồ cộng tác
và tuân thủ theo dòng thực thi cũng như sự trao đổi thông điệp Một biểu đồ cộng tác cũng có thể chứa
cả các đối tượng tích cực (active objects), hoạt động song song với các đối tượng tích cực khác (hình3.7) Biểu đồ cộng tác được miêu tả chi tiết trong chương sau
Hình 3.7 - Một biểu đồ công tác của một printer server
3.5.7 Biểu đồ hoạt động (Activity Diagram)
Một biểu đồ hoạt động chỉ ra một trình tự lần lượt của các hoạt động (activity) (hình 3.8) Biểu đồ hoạtđộng thường được sử dụng để miêu tả các hoạt động được thực hiện trong một thủ tục, mặc dù nó cũng
có thể được sử dụng để miêu tả các dòng chảy hoạt động khác, ví dụ như trong một Use case hay trongmột trình tự tương tác Biểu đồ hoạt động bao gồm các trạng thái hành động, chứa đặc tả của một hoạtđộng cần phải được thực hiện (một hành động - action) Một trạng thái hành động sẽ qua đi khi hànhđộng được thực hiện xong (khác với biểu đồ trạng thái: một trạng thái chỉ chuyển sang trạng thái khácsau khi đã xảy ra một sự kiện rõ ràng !) Dòng điều khiển ở đây chạy giữa các trạng thái hành động liênkết với nhau Biểu đồ còn có thể chỉ ra các quyết định, các điều kiện, cũng như phần thực thi song songcủa các trạng thái hành động Biểu đồ ngoài ra còn có thể chứa các loại đặc tả cho các thông điệp đượcgửi đi hoặc được nhận về, trong tư cách là thành phần của hành động được thực hiện
Trang 32Hình 3.8 - Một biểu đồ hoạt động cho một printer server
3.5.8 Biểu đồ thành phần (Component Diagram)
Một biểu đồ thành phần chỉ ra cấu trúc vật lý của các dòng lệnh (code) theo khái niệm thành phần code.Một thành phần code có thể là một tập tin source code, một thành phần nhị phân (binary) hay mộtthành phần thực thi được (executable) Một thành phần chứa các thông tin về các lớp logic hoặc các lớp
mà nó thi hành, như thế có nghĩa là nó tạo ra một ánh xạ từ hướng nhìn logic vào hướng nhìn thànhphần Biểu đồ thành phần cũng chỉ ra những sự phụ thuộc giữa các thành phần với nhau, trợ giúp chocông việc phân tích hiệu ứng mà một thành phần được thay đổi sẽ gây ra đối với các thành phần khác.Thành phần cũng có thể được miêu tả với bất kỳ loại giao diện nào mà chúng bộc lộ, ví dụ như giaodiện OLE/COM; và chúng có thể được nhóm góp lại với nhau thành từng gói (package) Biểu đồ thànhphần được sử dụng trong công việc lập trình cụ thể (xem hình 3.9)
Trang 33Hình 3.9 - Một biểu đồ thành phần chỉ ra sự phụ thuộc giữa các thành phần mã
3.5.9 Biểu đồ triển khai (Deployment Diagram)
Biểu đồ triển khai chỉ ra kiến trúc vật lý của phần cứng cũng như phần mềm trong hệ thống Bạn có thểchỉ ra từng máy tính cụ thể và từng trang thiết bị cụ thể (node) đi kèm sự nối kết giữa chúng với nhau,bạn cũng có thể chỉ ra loại của các mối nối kết đó Bên trong các nút mạng (node), các thành phần thựcthi được cũng như các đối tượng sẽ được xác định vị trí để chỉ ra những phần mềm nào sẽ được thực thitại những nút mạng nào Bạn cũng có thể chỉ ra sự phụ thuộc giữa các thành phần
Biểu đồ triển khai chỉ ra hướng nhìn triển khai, miêu tả kiến trúc vật lý thật sự của hệ thống Đây làmột hướng nhìn rất xa lối miêu tả duy chức năng của hướng nhìn Use case Mặc dù vậy, trong một môhình tốt, người ta có thể chỉ tất cả những con đường dẫn từ một nút mạng trong một kiến trúc vật lý chotới những thành phần của nó, cho tới lớp mà nó thực thi, cho tới những tương tác mà các đối tượng củalớp này tham gia để rồi cuối cùng, tiến tới một Use case Rất nhiều hướng nhìn khác nhau của hệ thốngđược sử dụng đồng thời để tạo ra một lời miêu tả thấu đáo đối với hệ thống trong sự tổng thể của nó
Trang 34Hình 3.10 - Một biểu đồ triển khai chỉ ra kiến trúc vật lý của hệ thống
Multithreads
4.1 Giới thiệu
Thread là một đơn vị xử lý cơ bản trong hệ thống Mỗi thread xử lý tuần tự các đoạn code của nó, sở hữu một con trỏ lệnh, một tập các thanh ghi và một vùng nhớ stack riêng, các thread chia sẻ CPU với nhau giống như cách chia sẻ giữa các tiến trình Một tiến trình sở hữu nhiều thread, tuy nhiên một thread chỉ có thể thuộc về một tiến trình, các thread bên trong cùng một tiến trình chia sẻ nhau không gian địa chỉ chung, điều này có nghĩa là các thread có thể chia sẻ nhau các biến toàn cục của tiến trình Một thread cũng có thể có các trạng thái giống như các trạng thái của một tiến trình
Trang 354.2 Vòng đời của thread
Hình – Biểu đồ trạng thái UML của vòng đời thread
Trạng thái New và Runable:
Một thread mới bắt đầu trong trạng thái New Nó sẽ giữ trạng thái này cho đến khi chương trình khởi động thread, đặt nó vào trạng thái Runable Và lúc này coi như nó đang thực hiện một nhiệm vụ.
Trạng thái Waitting:
Đôi khi thread Runable chuyển sang trạng thái chờ trong khi nó đợi một thread khác thực hiện
nhiệm vụ Trạng thái chờ chuyển ngược lại trạng thái Runable khi nó được thread khác thông báo cho
nó để tiếp tục thực hiện
Trạng thái Timed waitting :
Trạng thái Runable có thể vào trạng thái chờ trong khoảng thời gian nhất định Nó chuyển lại
trạng thái chờ khi hết thời gian chờ hoặc khi có sự kiện chờ xảy ra
Trạng thái Terminate:
Một thread runable vào trạng thái Terminate (trạng thái chết) khi hoàn thành nhiệm vụ nào đó
hoặc có thể kết thúc một cách khác có thể do lỗi xảy ra Trong biểu đồ UML trên, trạng thái Terminate
là trạng thái cuối cùng để báo hiệu kết thúc của quá trình chuyển giai đoạn
Trạng thái Blocked:
Thread runable chuyển sang trạng thái Blocked khi nó đang thực hiện nhiệm vụ nào đó, nhưng
không thể hoàn thành nhanh được và nó tạm thời chờ cho đến khi hoàn thành
4.3 Multithread trong Java
Trang 36Với Java ta có thể xây dựng các chưong trình đa luồng Một ứng dụng có thể bao gồm nhiều luồng Mỗi luồng được gán một công việc cụ thể, chúng được thực thi đồng thời với các luồng khác
Có hai cách để tạo ra luồng
Cách 1: Tạo ra một lớp kế thừa từ lớp Thread và ghi đè phương thức run của lớp Thread như sau:
class MyThread extends Thread{
public void run(){
//Mã lệnh của tuyến }
}
Cách 2: Tạo ra một lớp triển khai từ giao diện Runnable, ghi đè phương thức run
class MyThread implements Runnable{
public void run(){
//Mã lệnh của tuyến }
}
Lớp Thread
Lớp Thread chứa phương thức tạo dựng Thread() cũng như nhiều phương thức hữu ích có chức năng chạy, khởi động, tạm ngừng, tiếp tục, gián đoạn và ngưng tuyến Để tạo ra và chạy một tuyến ta cần làm 2 bước:
Mở rộng lớp Thread và Ghi đè phương thức run()
Gọi phương thức start() để bắt đầu thực thi tuyến
Lớp Thread không có nhiều phương thức lắm, chúng chỉ có một vài phương thức hữu dụng được liệt kêsau:
• public void run()
được java gọi để thực thi tuyến thi hành, bạn phải ghi đè phương thức này để thực thi nhiệm vụ của tuyến, bởi vì phương thức run()của lớp Thread chỉ là phương thức rỗng
• public void start()
khi ta tạo ra tuyến nó chưa thực sự chạy cho đến khi, phương thức start() được gọi, khi start() được gọi thì phương thức run() cũng được kích hoạt
• public void stop()
có chức năng ngưng tuyến thi hành, phương thức này không an toàn, bạn nên gán null vào biến Thread
để để dừng tuyến, thay vì sử dụng phương thức stop()
• public void suspend()
Có chức năng tạm ngừng tuyến, trong java 2, phương thức này ít được sử dụng, bởi vì phương thức này không nhả tài nguyên mà nó lắm giữ, do vậy có thể nguy cơ dẫn đến deadlock ( khoá chết ), bạn nên dùng phương thức wait(), để tạm ngừng tuyến thay vì sử dụng phương thức suspend()
• public void resume()
Tiếp tục vận hành tuyến nếu như nó đang bị ngưng, nếu tuyến đang thi hành thì phương thức này bị bỏ qua, thông thường phương thức này được dùng kết hợp với phương thức suspend(), kể từ java 2
phương thức này cùn với phương thức suspend()bị từ chối, do vậy bạn nên dùng phương thức notify () thay vì sử dụng phương thức resume()
• public static void sleep( long millis) Threadows InterruptedException
Trang 37đặt tuyến thi hành vào trạng thái ngủ, trong khoảng thời gian xác định bằng mili giây chú ý sleep() là phương thức tĩnh
• public void interrupt()
làm gián đoạn tuyến thi hành
• public static boolean isInterrupt()
kiểm tra xem tuyến có bị ngắt không
• public void setpriority( int p)
ấn định độ ưu tiên cho tuyến thi hành, độ ưu tiên được xác định là một số
nguyên thuộc đoạn [1,10]
• public final void wait() throws InterruptException
đặt tuyến vào trạng thái chờ một tuyến khác, cho đến khi có một tuyến khác
thông báo thì nó lại tiếp tục, đây là phương thức của lớp cơ sở Object
• public final void notify ()
đánh thức tuyến đang chờ, trên đối tượng này
• public final void notifyAll() đánh thức tất cả các tuyến đang chờ trên đối tượng này
• isAlive() Trả về True, nếu luồng là vẫn còn tồn tại (sống)
• getPriority() Trả về mức ưu tiên của luồng
• join() Đợi cho đến khi luồng kết thúc
• isDaemon() Kiểm tra nếu luồng là luồng một luồng chạy ngầm (deamon)
• setDeamon(boolean on) Đánh dấu luồng như là luồng chạy ngầm
4.4 Đồng bộ hóa
Khi nhiều tuyến truy cập đồng thời vào tài nguyên dùng chung, mà tài nguyên này lại không thể chia
sẻ, cho nhiều tuyến, khi đó tài nguyên dùng chung có thể bị hỏng Ví dụ, một luồng có thể cố gắng đọc
dữ liệu, trong khi luồng khác cố gắng thay đổi dữ liệu Trong trường hợp này, dữ liệu có thể bị sai Trong những trường hợp này, bạn cần cho phép một luồng hoàn thành trọn vẹn tác vụ của nó, và rồi thìmới cho phép các luồng kế tiếp thực thi Khi hai hoặc nhiều hơn một luồng cần thâm nhập đến một tài nguyên được chia sẻ, bạn cần chắc chắn rằng tài nguyên đó sẽ được sử dụng chỉ bởi một luồng tại một thời điểm
Bởi trong java không có biến toàn cục, chúng ta chỉ có thuộc tính của đối tượng, tất cả các thao tác có thể dẫn đến hỏng hóc đều thực hiện qua phương thức, do vậy java cung cấp từ khoá synchronized, từ khoá này được thêm vào định nghĩa của phương thức báo cho java biết đây là một phương thức đồng
bộ, mỗi đối tượng sẽ có một bộ quản lý khoá, bộ quản lý khoá này chỉ cho 1 phương thức synchronizedcủa đối tượng đó chạy tại một thời điểm Mấu chốt của sự đồng bộ hóa là khái niệm “monitor” (giám sát), hay còn gọi “semaphore” (cờ hiệu) Một “monitor” là một đối tượng mà được khóa độc quyền Chỉ một luồng có thể có monitor tại mỗi thời điểm Tất cả các luồng khác cố gắng thâm nhập vào monitor sẽ bị trì hoãn, cho đến khi luồng đầu tiên thoát khỏi monitor Các luồng khác được báo chờ đợi monitor Một luồng có thể monitor một đối tượng nhiều lần
4.5 Nhóm thread