business component

Post on 24-Jan-2016

54 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Business Component. Nội dung. Đưa ra các yêu cầu của hệ thống. Phát triển CSDL của hệ thống. Xây dựng mô hình tương tác các thành phần với các chức năng được đóng gói trong hệ thống. Các đối tượng nghiên cứu. Hiểu được kiến trúc mô hình N – tầng. Hiểu được cách sử dụng các thành phần. - PowerPoint PPT Presentation

TRANSCRIPT

Business Component

Nội dung

• Đưa ra các yêu cầu của hệ thống.

• Phát triển CSDL của hệ thống.

• Xây dựng mô hình tương tác các thành phần với các chức năng được đóng gói trong hệ thống.

Các đối tượng nghiên cứu

• Hiểu được kiến trúc mô hình N – tầng.

• Hiểu được cách sử dụng các thành phần.

• Tạo ra mô hình các thành phần trong .NET, sử dụng C# để tương tác CSDL.

Giới thiệu

• Trình bày kiến trúc N – tầng và các thành phần, hiểu được làm cách nào có thể được sử dụng trong hệ phân tán.

• Xây dựng mô hình tương tác giữa thành phần với các chức năng chính được đóng gói trong hệ thống.

Kiến trúc N – tầng

• Kiến trúc N – tầng mô tả một cách logic sự phân biệt của tầng presentation, tầng business, tầng dữ liệu.

Kiến trúc N – tầng

• Tầng dữ liệu: quản lý dữ liệu.– Quản lý CSDL đã được xây dựng

• Tầng presentation: Điều khiển những gì mà các user thấy được và có thể thực hiện trong hệ thống– Sẽ xây dựng một vài ứng dụng cho tầng này

• Tầng Business (tầng giữa): điều khiển mọi thứ còn lại.

Tầng Business

• Tầng Business chứa các chức năng chính của hệ thống, gồm:– Business rule

– Work Flows

• Cung cấp cách điều khiển việc truy cập dữ liệu

• Xử lý dữ liệu và tạo ra sự hợp lệ dữ liệu đầu vào.

• Tầng business sẽ được định nghĩa bằng cách sử dụng class

• Thư viện các class mô tả tầng business được thực thi như những component.

Component

• Các component bao gồm một tập các class được xây dựng đầy đủ của ứng dụng.

• Có thể được tái sử dụng

• Phải được đóng gói tất cả các thuộc tính.

• Phải cung cấp một interface cho phép được truy cập bởi các client (thậm chí là được truy xuất từ các thành phần khác)

Bắt đầu

• Chúng ta tạo tạo các component trong tầng Business như là một thư viện trong VS2005

• Tạo một project–Mở Microsoft Visual Studio 2005

– Vào File \ New Project

– Chọn kiểu project là Visual C# và sau đó chọn Class Library

– Tên của project là PTSLibrary trong cùng một vị trí của project PTS

Use – Case Diagram

Class Diagram

Tạo Project

Cấu trúc PTSLibrary

• Có ba kiểu class có trong project– Business Object

– DAO (Data Access Object)

– Các Object giao tiếp

Business object

• Business object hoặc là domain object là các mô tả trừu tượng các thực thể của hệ thống.

• Mô tả các khái niệm quan trọng về hoạt động tương tác của hệ thống tạo thành mô hình.

• Trong hệ thống, đây là sự trừu tượng hóa của các đối tượng quản lý liên quan đến các khai niệm như: project, team, task,…

Business object

• Business object trong thành phần hệ thống là:– Project

– Task

– Subtask

– User

– Team

– TeamLeader

– TeamMember

– Customer

– Status

Business object

• Một số business object có cùng tên với các thực thể trong mô hình dữ liệu, và một số business object không có trong mô hình dữ liệu.

• Mô hình dữ liệu quan hệ yêu cầu các tiếp cận khác hơn với mô hình hướng đối tượng.–Mô hình đối tượng dựa trên các nguyên lý về CNPM.

–Mô hình quan hệ dưa trên các nguyên lý toán học

DAO

• DAO – Data Access Object cung cấp một giao tiếp trừu tượng đến CSDL.

• Chúng ta cần viết code và kết hợp qua lại giữa mô hình business class và CSDL– Không phải lẫn lộn giữa business logic và SQL code

– Không phải viết lại tất cả các business class nếu có thay đổi trong CSDL.

DAO

• DAO bao gồm tất cả các lệnh SQL để đọc và ghi vào CSDL.

• Có thể có một đối tượng DAO cho project, nhưng chúng ta có nhiều dạng user, thực hiện các dữ liệu khác nhau, nên chúng ta có đối tượng DAO với các vai trò:– SupperDAO.

– AdminDAO.

– CustomerDAO

– ClientDAO (Các nhóm trưởng sử dụng .NET /Java)

Các đối tượng giao tiếp – Façade Objects

• Project PTSLibrary là một thư viện các lớp.– Không có giao diện đồ họa

– Được sử dụng bởi các section khác nhau trong hệ thống và không biết được cấu trúc bên trong của các thành phần business

• Hệ thống cung cấp các giao tiếp đến các thành phần business thông qua các đối tượng giao tiếp.

Các đối tượng giao tiếp – Façade Objects

• Chúng ta sẽ có một lớp giao tiếp ứng với mỗi dạng user để truy cập vào các thành phần business– Cho phép chúng ta thấy được từng vai trò của các user gồm chỉ

những gì cần phải thấy.(ví dụ như: một nhóm trưởng không thể tạo ra một dự án, và chỉ có PM mới có thể thực hiện được).

• Các lớp giao tiếp bao gồm:– PTSAdminFacade

– PTSClientFacade

– PTSCustomerFacade

– PTSSuperFacade

Tạo class

• Xóa file Class1.cs mặc định và tạo Class như sau

Tạo class

• Cửa số Solution Explorer sẽ gồm các Class sau:

• Với mỗi lớp được tạo ra chỉ chứa

các câu lệnh mặc định, các khai

báo namespace, và khai báo class

• Chúng ta chỉ thực thi một tập nhỏ

các chức năng được yêu cầu để

minh họa cách sử dụng trong hệ

thống

Class User

• Lớp này mô tả các user chung của hệ thống:

• Đây là lớp cha (super) của tất

cả các lớp mô tả các user, gồm: – Customer

– TeamLeader

– TeamMember

• Ba lớp trên kế thừa từ lớp User

Class User

• Lớp này có hai biến protected:– Username

– Password

• Các biến này chỉ cho phép đọc

• Cho các lớp con kế thừa và sử

dụng hai biến này là private

Class Customer

• Lớp này mô tả các khách hàng.

• Chức năng của lớp này đơn giản, bao gồm;– Lưu lại tên và hiển thị lại khi yêu cầu.

– Chức năng này đã tồn tại trong lớp User, vì vậy tạo ra sự thừa kế từ lớp User

• Mỗi thể hiện của lớp này được đặt lại tên, vì vậy cần tạo ra phương thức khởi tạo cho phép thực hiện điều này

Class Customer

• Các lệnh cần phải viết là:– Tạo lớp Customer kế thừa từ lớp User

– Thêm một phương thức khởi tạo

để lấy tên và ID

Class Customer

Lớp Customer kế thừa từ lớp User

name và id được kế thừa từ lớp User

Class TeamLeader

• Mô tả một nhóm trưởng

của các nhóm bên trong

hoặc các nhóm bên ngoài

Lớp được kế thừa từ lớp User

Thêm vào phương thức khởi tạo cho lớp TeamLeader

Class TeamLeader

Tạo một trường mới

Cho phép truy cập đến TeamID

Phương thức khởi tạo

Class Team

• Mô tả một nhóm bên trong

hoặc nhóm bên ngoài

đang làm việc cho

công ty

• Các trường khác gồm:

id, location,

name

Được liên kết đến TeamLeader

Class Team

Class Team

Enum Status

• Enum cho phép tạo ra các giá trị khác nhau

• Lưu trữ một tập các tên của các thể hiện

• Có thể được chuyển đổi thành một số nguyên integer

• Dễ dàng để đọc và xử lý:– if(currentStatus == 3)

– if(currentStatus == Status.Completed)

Enum Status

• Trạng thái:

task, subtask

Sự thay đổi từ Class sang Enum

Các số nguyên được gán cho từng trạng thái được ánh xạ đến trường StatusID trong bảng Status của CSDL

Class Task

• Mô tả công việc bên trong của

project và được phân công cho

từng nhóm và có thể được chia

thành các subtask

• Các trường khác: name, taskID

Liên kết đến Status thông qua mối kết hợp

Class Task

Chú ý có sử dụng kiểu dữ liệu Guid

Class Task

Class Project

• Mô tả một dự án

liên kết đến Customer và

Task thông qua mối kết hợp

• Có hai phương thức khởi tạo– Phụ thuộc trên ngữ cảnh của

đối tượng Project được sử dụng

Class Project

• Chú ý các kiểu dữ liệu

khai báo các biến

• task được khai báo generic– Cho phép tạo ra kiểu Collections

– Task là một danh sách chứa

các đối tượng kiểu Task

– Khai báo sử dụng <Type>Danh sách chứa các đối tượng kiểu Task

Class Project

• Hai phương thức khởi tạo (một cho Customer và một cho task)

Tạo DAO – Data Access Object

• Chúng ta lưu tất cả các

đối tượng DAO trong thư

mục con của project.

• Tạo một folder DAO trong

Project PTSLibrary

Tạo DAO – Data Access Object

• Tạo ra 4 class mới trong thư mục DAO:– SuperDAO

– AdminDAO

– CustomerDAO

– ClientDAO

• Các lớp này có code tương tác với CSDL– Để truy cập đến các lớp được yêu cầu,

ta cần phải thêm một namespace sau

vào trong mỗi lớp DAO:System.Data và System.Data.SqlClient

Truy cập đến CSDL

• Để truy cập đến CSDL đã được tạo, cần phải thêm đối tượng datasource

• Phải chắc chắn rằng SQL Server đang hoạt động và CSDL truy cập được.

• Chọn Add New Data Source từ menu Data

Truy cập đến CSDL

• Tiếp tục, ta chọn mục Database

Truy cập đến CSDL

• Trong màn hình kế tiếp click

vào button new Connection

và chọn Server và CSDL.

• Sau đó kiểm tra lại kết nối

đến CSDL tại button

Test Connection

Chọn Server

Chọn DataBase

Truy cập đến CSDL

• Chọn check box để đồng ý lưu kết nối

• Tên của kết nối là ConnectionString

Truy cập đến CSDL

• Click chọn các check box của các table và click Finish

• Bây giờ ta đã có

kết nối đến CSDL

và chuỗi kết nối

được tạo trong file

Settings.settings

DAO

• Cung cấp một giao tiếp trừu tượng đến data source

• DAO cung cấp sự liên kết rõ ràng giữa mô hình business và mô hình dữ liệu.

• DAO sẽ chứa tất cả các lệnh SQL để đọc và ghi dữ liệu

Cấu trúc UML của các đối tượng DAO

Class – Super DAO

• Là lớp DAO cơ sở

• Chứa hai phương thức cung

cấp hai thuộc tính được chia sẻ

của các đối tượng DAO:– GetCustomer

– GetListOfTask

Class – Super DAO – GetCustomer Method

Khai báo các đối tượng kết nối CSDL

Câu lệnh SQL truy vấn thông tin khách hàng

ConnectionString

Câu lệnh SQL trả về một dòng dữ liệuTạo một thể hiện của bảng CustomerGiá trị trả về của phương thức

Class – Super DAO – GetListTask Method

Chú ý rằng sử dụng dấu nháy đơn: ProjectID là kiểu GUID và không phải là một số

Kết quả trả về có thể nhiều hơn một dòngDuyệt qua tất cả các dòng dữ liệu

Phương thức khởi tạo của Task cần Guid và Task

Class – CustomerDAO

• Cung cấp các phương thức truy cập CSDL ứng với vai trò của khách hàng.

• Kế thừa từ lớp SuperDAO

• Hai phương thức:– Authenticate

– GetListOfProjects

CustomerDAO – Phương thức Authenticate

Thành phần {0} được thay thế bởi giá trị của username

Cần chắc chắn khi đọc từ SQL Datareader thì phải có một CustomerID được trả về, nếu không thì trả về 0

CustomerDAO – Phương thức GetListProject

Trong phương thức này tạo ra hai tập dữ liệu:1.Các project2.Tất cả các task của từng project

Class – ClientDAO

• Tương tự như lớp CustomerDAO.

• Cung cấp các phương thức truy cập CSDL đối với vai trò của TeamLeader

• Kế thừa từ lớp SuperDAO

• Hai phương thức:– Authenticate

– GetListOfProjects

• Lớp này cung cấp việc

truy cập CSDL cho các

Java Client

Class – ClientDAO

• Câu lệnh SQL trong phương thức Authenticate.sql = String.Format("SELECT DISTINCT Person.Name, UserId, TeamId FROM Person INNER JOIN Team ON (Team.TeamLeaderId = Person.UserId) WHERE Username='{0}' AND Password='{1}'", username, password);

• Phương thức GetListOfProjects trả về tất cả các project của từng nhóm (không phải các project của từng khách hàng như trong lớp CustomerDAO)

public List<Project> GetListOfProjects(int teamId)

Class – AdminDAO

• Cung cấp phương thức truy cập CSDL ứng với vai trò của Administrator

• Kế thừa từ lớp SuperDAO

• Có 6 phương thức:– Authenticate

– CreateProject

– CreateTask

– GetListOfCustomers

– GetListOfProjects

– GetListOfTeams

AdminDAO – Phương thức CreateProject

Tạo ra một Guid mới

Thực thi câu lệnh INSERT thay vì câu lệnh SELECT

Class – AdminDAO

• Câu lệnh SQL đối với phương thức Authenticate chắc chắn rằng chỉ có Administrator có thể thực thi.

• Phương thức CreateTask chèn một task mới vào CSDL.

• GetListOfCustomer trả về tất cả khách hàng trong CSDL.

• GetListOfProjects chỉ trả về các project tương ứng với PM đã tạo ra.

• GetListOfteams trả về tất cả các nhóm có trong CSDL.

Các đối tượng giao tiếp

• Cung cấp các giao tiếp đến các thành phần Business.

Class – PTSSuperFacade

• Đây là lớp giao tiếp cơ sở.

• Chứa các phương thức cung cấp các thuộc tính được chia sẻ bởi các lớp giao tiếp khác

• Phương thức:– GetListOfTask

Class – PTSSuperFacade

Truy cập một lớp trong thư mục con DAO

Giá trị trả về là một mảng các Task

Class – PTSCustomerFacade

• Cung cấp một giao tiếp public cho dịch vụ web của khách hàng

• Kế thừa từ lớp PTSSuperFacade

• Một phương thức:– GetListOfProjects

Class – PTSCustomerFacade

Đưa ra việc khởi tạo từ lớp cha

Lớp giao tiếp gọi đối tượng DAO. Điều này cho phép chúng ta chỉ ra các lớp hiện hành từ DAO

Class – PTSClientFacade

• Cung cấp một giao tiếp public cho dịch vụ web client sử dụng Java

• Kế thừa từ lớp PTSSuperFacade.

• Có hai phương thức:– GetListOfProject

– Authenticate

Class – PTSClientFacade

Username và password phải được cung cấp

Class – PTSAdminFacade

• Cung cấp một giao tiếp public cho Administrator điều khiển các client

• Kế thừa từ lớp PTSSupperFacade

• Các phương thức– Authenticate

– CreateProject

– CreateTask

– GetListOfCustomers

– GetListOfProjects

– GetListOfTeams

Class – PTSAdminFacade

Username và password phải được cung cấp

Tổng kết

• Trong phần này đã làm việc trên các thành business của project PTSLibrary

• Ta phải build project bằng cách chọn Build PTSLibrary từ menu Build và sửa lại tất cả các lỗi.

top related