Cho phép quản lí tốt hơn các chương trình phức tạp Functions & Procedures Modules Abstract Data Types Class/Objects Data Abstract cho phép Mở rộng ngôn ngữ : Định nghĩa thêm
Trang 1 Cho phép quản lí tốt hơn các chương trình phức tạp
Functions & Procedures
Modules
Abstract Data Types
Class/Objects
Data Abstract cho phép
Mở rộng ngôn ngữ : Định nghĩa thêm kiểu
Chế tác các thể hiện dữ liệu khác nhau
Các đặc trưng của Person Các đặc trưng của Customer
NameAddressAgeHeightHair color
NameAddress
Thuộc tính Hành động
Tên khách hàng Chấp nhận tên khách hàngĐịa chỉ khách hàng Chấp nhận địa chỉ khách hàngKiểu xe mua Chấp nhận kiểu xe đặt hàngNgười bán (saleman) Chấp nhận tên người bán
Phát sinh hóa đơn
Data Abstraction là quá trình nhận diện và nhóm dữ liệu và hành động có liên quan tới một thực thể riêng biệt
Thuận lợi:
Nhận diện các đặt trưng và hành động thiết yếu
Giúp lọai trừ những chi tiết không cần thiết
Class and Object
(Lớp và đối tượng) ClassMột Class định nghĩa như là một bản mẫu hay một kiểu chung về một lọai đối tượng
nào đó theo thuộc tính và hành vi
Class Customer
Tên khách hàngĐịa chỉ khách hàngKiểu xe muaTên người bánChấp nhận tênChấp nhận địa chỉChấp nhận lọai xe đặt muaChấp nhận tên người bánPhát sinh hóa đơn
Trang 2 Class định nghĩa một thực thể, trong khi một object là một thực thể thực sự.
Class là một mô hình ý niệm,định nghĩa tất cả đặt trưng và hành động của một object, trong khi đối tượng là một mô hình thực
Class là một prototype của một object
Tất cả object thuộc về một class đều có đặt trưng và hành động giống nhau
Khởi tạo thuộc tính
Cho phép truy xuất các thuộc tính và phương thức
Destruction (Phương thức hủy bỏ)
Quá trình xóa một đối tượng
A Destructor:
Giải phóng không gian cấp phát
Cấm truy xuất các thuộc tính và phương thức
Tính bền vững
(Persistence) của đối tượng.Tính bền vững là một khả năng của đối tượng để lưu trữ dữ liệu trong thời gian sống
Bao Bọc và Che Dấu
Trang 3 Thiết kế các đối tượng
Phát triển các giải thuật cho các phương thức của đối tượng
Mô tả giải thuật, dùng pseudocode
Viết code
Kiểm tra code
Debug
Trang 4Những thuận lợi
Khả năng đối phó với những ứng dụng thuộc lọai khó
Nâng cao tính nhất quán giữa phân tích, thiết kế và lập trình
Nâng cao chia sẽ trong ứng dụng
Tính dùng lại của những kết quả phân tích thiết kế và lập trình
Giảm bớt các lỗi
Sự thay đổi nhanh hơn
Tổng kết
Phương pháp Object-oriented cho phép giải quyết hầu hết các vấn đề
Sự trừu tượng dữ liệu là quá trình nhận diện và nhóm các thuộc tính và hành độngquan hệ tới một thực thể cụ thể
Class định nghĩa một thực thể, trong khi một object là một thực thể thực sự
Construction và Destruction
Persistence, Data encapsulation, Inheritance và Polymorphism
Câu hỏi
Các đối tượng trong thế giới thực chứa _ và _
Một trạng thái của đối tượng được lưu trữ trong _
Một hành vi của đối tượng được phơi bày thông qua _
Các dữ liệu nội tại được che đậy từ thế giới bên ngòai và chỉ truy xuất qua phương thức được biết như dữ liệu _
Bản thiết kế cho một đối tượng phần mềm được gọi là _
Hành vi chung, phổ biến có thể được định nghĩa trong _ và được thừa kế vào _
Một tập phương thức với không hiện thực được gọi là _
2 Giới thiệu (Introduction)
3 Cài đặt (Setup)
3.1 Visual Studio C#
4 Cửa sổ làm việc (Window)
4.1 Khởi động (Open),Thoát (Exit)
Trang 6+ Chọn loại ứng dụng:
o Visual C#
Windows
Smart DeviceDatabase
o Visual VBWindowsSmart DeviceDatabase
o Visual C++
+ ATL+ CLR
+ General
+ MFC
+ Smart Device
+ Win32
o Visual J#
Project trong Solution mới
+ Click chuột phải lên Solution trong khung bên phải để thêm một Project cho Solution này:
Trang 8* Cập nhật ứng dụng hiện tại: Giống lưu ứng dụng.
* Cập nhật tất cả ứng dụng:
C1: Click chọn nút Save All
C2: Click chọn menu > chọn Save All.
Ấn phím Ctrl + Shift + S.
* Lưu với 1 tên khác:
Click chọn menu > chọn Save as.
Đóng
(Close) Click chọn menu > chọn Close Solution.
Trang 9- Dùng cửa sổ Watch để theo dõi giá trị mong muốn và thực tế.
- Thôi không phân tích 1 hàm hay nhảy đến dấu break point:
Ấn phím Shift + F11.
Trang 10Project trong Solution cũ.
+ Click chuột phải lên Solution trong khung bên phải để thêm một Project cho Solution này:
Save (Lưu
trữ)
* Lưu ứng dụng:
C1: Click chọn nút Save C2: Click chọn menu > chọn Save.
Ấn phím Ctrl + S.
Trang 11* Cập nhật ứng dụng hiện tại: Giống lưu ứng dụng.
* Cập nhật tất cả ứng dụng:
C1: Click chọn nút Save All C2: Click chọn menu > chọn Save All.
Ấn phím Ctrl + Shift + S.
* Lưu với 1 tên khác:
Click chọn menu > chọn Save as.
* Lưu với mã Unicode:
- Chọn Apply to all documents > chọn nút Save with other encoding.
Trang 12- Chọn Unicode (UTF-8).
Close
(Đóng)
Click chuột phải lên Project rồi chọn Remove.
Open (Mở) * Trang Start:
Trang 14- Chọn thẻ > Double Click lên Project sẽ tham chiếu đến.
5.1.1 DTO, DAO, BUS
Tạo mới (New) - Chọn mục .
5.1.2 Presentation
Tạo mới (New) - Chọn mục .
5.1.3 Item (Thành phần)
Add (Thêm)
C1: Click chọn menu > chọn đối tượng thêm vào:
C2: Click chuột phải lên Project bất kì rồi chọn đối tượng
- Ấn phím Shift + Alt+ C để thêm Lớp.
- Ấn phím Ctrl + Shift+ A để thêm Thành phần mới.
Trang 15New (Tạo mới)
- Khi đó sẽ xuất hiện hộp thoại New File:
Save (Lưu trữ) * Lưu ứng dụng:
C1: Click chọn nút Save C2: Click chọn menu > chọn Save.
Trang 16* Lưu với 1 tên khác:
Click chọn menu > chọn Save as.
Close (Đóng)
Click chuột phải lên Project rồi chọn Remove.
Open (Mở) * Trang Start:
* Menu:
- Click chọn menu > chọn Open > chọn:
Trang 17* Nút công cụ:
Click chọn nút Open File để mở 1 file mã nguồn
Ấn phím Ctrl + O.
Rename (Đổi tên)
- Click chuột phải lên file > chọn Rename.
6 Cấu trúc chương trình (Program Structure)
Giới thiệu
(Intruduction)
- Bản chất của lập trình hướng đối tượng là tạo ra các kiểu mới và được gọi là lớp Một lớp biểu
diễnmột vật gì đó, thể hiện đó của lớp được gọi là đối tượng
- Giống với các ngôn ngữ lập trình hướng đối tượng khác, một kiểu trong C# cũng định nghĩa
bằng từ khoá class.
Cú pháp (Syntax)
using Bộ_khung;
namespace Tên_Ứng_dụng {
class Tên_lớp {
static void Main( string [] args) {
//Ghi chú;
Câu_lệnh;
} } }
Ví dụ (Example) * Viết chương trình:
using System;
Trang 18using System.Collections.Generic;
using System.Text;
namespace appHello {
class clsHello {
static void Main( string [] args) {
//Đây là chương trình đầu tiên của tôi Console.WriteLine( "Hello the world!" );
Console.ReadLine();
} } }
//Day la chuong trinh dau tien cua toi
Ghi chú theo khối
* Cú pháp:
/* Dòng ghi chú 1 …
7 Giao diện (Interface)
7.1 Nhập (Input), Xuất (Output)
7.1.1 Lệnh xuất ra màn hình
Write
WriteLine
Mục đích (Purpose) - Là lệnh cho phép in ra màn hình các giá trị thuộc các kiểu dữ liệu khác nhau.
Mô hình (Model)
Cú pháp (Syntax)
Ghi chú Từng dòng Theo khối
Trang 19- Là lệnh cho phép ghi nhận từ bàn phím các giá trị thuộc các kiểu dữ liệu khác nhau vào
cho biến
- Khi nhập xong thì ấn phím Enter để kết thúc việc nhập.
Mô hình (Model)
Cú pháp (Syntax)
7.2 Control (Điều khiển)
Trang 20có thể không cần sử dụng từ khóa new
- Trong Struct có thể định nghĩa các phương thức (giống Class)
- Trong Struct, trình biên dịch luôn luôn cung cấp một constructor không tham số mặc định, và không cho phép thay thế
- Struct không hỗ trợ thừa kế
struct StrHocSinh {
public int MaSo;
public string HoTen;
public double Toan;
public double Van;
public double DTB;
public StrHocSinh(int ms, string ht, double t, double v)
{ MaSo = ms;
Trang 2114.1.1 DTO (Data Tranfer Object)
{
get { return Tên_Biến; }
set { Tên_Biến = value; }
Trang 22private string ten;
get { return ten; }
set { ten = value; }
private Kiểu_dữ_liệu Tên_Biến;
private bool Tên_Điều_kiện;
//Thuộc tính public Kiểu_dữ_liệu Tên_Thuộc_tính
{
get { return Tên_Biến; }
set { Tên_Biến = value; }
}
public bool Tên_Điều_kiện
{
get { return Tên_Biến; }
set { Tên_Biến = value; }
Trang 23private string diaChi;
private double toanTu;
private double toanDen;
private double lyTu;
private double lyDen;
private double hoaTu;
private double hoaDen;
private double dtbTu;
private double dtbDen;
private int maLop;
private bool checkNgaySinh;
private bool checkDiaChi;
private bool checkToan;
private bool checkLy;
private bool checkHoa;
private bool checkDTB;
private bool checkLopHoc;
get { return ten; }
set { ten = value; }
}
public DateTime NgaySinhTu
{
get { return ngaySinhTu; }
set { ngaySinhTu = value; }
}
Trang 24public DateTime NgaySinhDen
{
get { return ngaySinhDen; }
set { ngaySinhDen = value; }
}
public string DiaChi
{
get { return diaChi; }
set { diaChi = value; }
}
public double ToanTu
{
get { return toanTu; }
set { toanTu = value; }
}
public double ToanDen
{
get { return toanDen; }
set { toanDen = value; }
}
public double LyTu
{
get { return lyTu; }
set { lyTu = value; }
}
public double LyDen
{
get { return lyDen; }
set { lyDen = value; }
}
public double HoaTu
{
get { return hoaTu; }
set { hoaTu = value; }
}
public double HoaDen
{
get { return hoaDen; }
set { hoaDen = value; }
}
public double DTBTu
{
get { return dtbTu; }
set { dtbTu = value; }
}
public double DTBDen
{
get { return dtbDen; }
set { dtbDen = value; }
}
public int MaLop
{
Trang 25set { checkDiaChi = value; }
}
public bool CheckToan
{
get { return checkToan; }
set { checkToan = value; }
}
public bool CheckLy
{
get { return checkLy; }
set { checkLy = value; }
}
public bool CheckHoa
{
get { return checkHoa; }
set { checkHoa = value; }
}
public bool CheckDTB
{
get { return checkDTB; }
set { checkDTB = value; }
}
public bool CheckLopHoc
{
get { return checkLopHoc; }
set { checkLopHoc = value; }
NgaySinhTu = new DateTime(1950, 1, 1);
NgaySinhDen = new DateTime(1997, 1, 1);
Trang 26{
// Tạo chuỗi kết nối
string Chuỗi_kết_nối = "…";// Tạo đối tượng kết nốiOleDbConnection Đối_tượng_kết_nối = new OleDbConnection(Chuỗi_kết_nối);
// Mở kết nốiĐối_tượng_kết_nối.Open();
// Trả đối tượng kết nốireturn Đối_tượng_kết_nối;
OleDbCommand Đối_tượng_Command = new OleDbCommand(Chuỗi_SQL, Đối_tượng_kết_nối);
OleDbDataReader Đối_tượng_DataReader = Đối_tượng_Command.ExecuteReader();
ArrayList Đối_tượng_Danh_sách = new ArrayList();
Lớp_DTO Đối_tượng_DTO = new Lớp_DTO();
while (Đối_tượng_DataReader.Read())
{
Đối_tượng_DTO = new Lớp_DTO();
Đối_tượng_DTO.Thuộc_tính = (Kiểu_dữ_liệu)Đối_tượng_DataReader Reader["Tên_Cột"];
Đối_tượng_Danh_sách.Add(Đối_tượng_DTO);
}
// Đóng kết nối
Trang 27OleDbDataAdapter Đối_tượng_DataAdapter = new OleDbDataAdapter(Chuỗi_SQL, Đối_tượng_kết_nối);
DataTable Đối_tượng_Bảng = new DataTable();
Đối_tượng_DataAdapter.Fill(Đối_tượng_Bảng);
// Đóng kết nốiĐối_tượng_kết_nối.Close();
// Trả về đối tượng danh sáchreturn Đối_tượng_Bảng;
}
//Phương thức Cập nhật bảng public void CapNhatBang(DataTable Đối_tượng_Bảng)
OleDbDataReader Đối_tượng_DataReader = Đối_tượng_Command.ExecuteReader();
Lớp_DTO Đối_tượng_DTO = new Lớp_DTO();
while (Đối_tượng_DataReader.Read())
{
Đối_tượng_DTO.Thuộc_tính_Mã = (Kiểu_dữ_liệu)Đối_tượng_DataReader["Cột_Mã"];
Đối_tượng_DTO.Thuộc_tính_Khác = (Kiểu_dữ_liệu)Đối_tượng_DataReader["Cột_Khác"];
Trang 28return Đối_tượng_DTO;
}
//Phương thức Thêm public void Them(Lớp_DTO Đối_tượng_DTO)
Chuỗi_SQL = "SELECT @@IDENTITY";
Đối_tượng_Command = new OleDbCommand(Chuỗi_SQL, Đối_tượng_kết_nối);
Đối_tượng_DTO.Thuộc_tính_Mã = (Kiễu_dữ_liệu)Đối_tượng_Command.ExecuteScalar();
// Đóng kết nối
Đối_tượng_kết_nối.Close();
}
// Phương thức Xóa public void Xoa(Kiễu_dữ_liệu Mã)
Đối_tượng_Command.Parameters["@Cột_Mã "].Value = Đối_tượng_DTO
Trang 29public OleDbConnection ConnectionData()
{
// Tạo chuỗi kết nối
string cnStr = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = TruongHoc.mdb";
// Tạo đối tượng kết nối và mở kết nối
OleDbConnection cn = new OleDbConnection(cnStr);
//Phương thức Lấy danh sách điền vào ComboBox, DataGrid
public IList LayDanhSach()
LopHocDTO lh = new LopHocDTO();
ArrayList ds = new ArrayList();
while (dr.Read())
{
lh = new LopHocDTO();
lh.Ma = (int)dr["Ma"];
lh.Ten = (string)dr["Ten"];
OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
DataTable dt = new DataTable();
Trang 30OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
OleDbCommand cmd = new OleDbCommand(strSQL, cn);
cmd.Parameters.Add("@Ma", OleDbType.Integer);
cmd.Parameters["@Ma"].Value = maLop;
OleDbDataReader dr = cmd.ExecuteReader();
LopHocDto lhDto = new LopHocDto();
while (dr.Read())
{
lhDto.Ma = (int)dr["Ma"];
lhDto.Ten = (string)dr["Ten"];
OleDbCommand cmd = new OleDbCommand(strSQL, cn);
cmd.Parameters.Add("@Ten", OleDbType.WChar);
Trang 31public void Sua(LopHocDto lhDto)
OleDbCommand cmd = new OleDbCommand(strSQL, cn);
cmd.Parameters.Add("@Ten", OleDbType.WChar);
cmd.Parameters.Add("@Ma", OleDbType.Integer);
cmd.Parameters["@Ten"].Value = lhDto.Ten;
cmd.Parameters["@Ma"].Value = lhDto.Ma;
// Trả về đối tượng Danh sách return Đối_tượng_danh_sách;
}
//Phương thức Lấy bảng public DataTable LayBang()
{ // Khai báo Đối tượng lớp DAO
LớpDAO Đối_tượng_DAO = new LớpDAO();
// Lấy Bảng
DataTable Đối_tượng_Bảng = Đối_tượng_DAO.LayBang();
// Trả về đối tượng Bảng
Trang 32return Đối_tượng_Bảng;
}
//Phương thức Cập nhật Bảng public void CapNhatBang(DataTable Đối_tượng_Bảng)
{
// Khai báo Đối tượng lớp DAO
LớpDAO Đối_tượng_DAO = new LớpDAO();
// Cập nhật Bảng hsDAO.CapNhatBang(dt);
}
//Phương thức Tìm kiếm public Lớp_DTO TimKiem(Kiểu_dữ_liệu Mã)
{
// Khai báo Đối tượng lớp DAO
LớpDAO Đối_tượng_DAO = new LớpDAO();
// Tìm kiếm LớpDTO Đối_tượng_DTO = Đối_tượng_DAO.TimKiem(Mã);
// Trả về Đối tượng DTO
return Đối_tượng_DTO;
}
//Phương thức Thêm public void Them(Lớp_DTO Đối_tượng_DTO)
{
// Kiểm tra Đối tượng DTO
if ((Đối_tượng_DTO.Thuộc_tính So_sánh Giá_trị))
{
throw new Exception("Lỗi");
}
// Khai báo Đối tượng lớp DAO
LớpDAO Đối_tượng_DAO = new LớpDAO();
// Thêm
Đối_tượng_DAO.Them(Đối_tượng_DTO);
}
//Phương thức Xóa public void Xoa(Kiễu_dữ_liệu Mã)
{
// Khai báo Đối tượng lớp DAO
LớpDAO Đối_tượng_DAO = new LớpDAO();
// Xóa
Đối_tượng_DAO.Xoa(Mã);
}
//Phương thức Sửa public void Sua(Lớp_DTO Đối_tượng_DTO)
{
// Khai báo Đối tượng lớp DAO
LớpDAO Đối_tượng_DAO = new LớpDAO();