bài giảng dành cho sinh viên các trường đại học cao đẳng ,khoa điện trên cả nước. Bài giảng do đội ngũ giảng viên trường đại học giao thông vận tải hà nội biên soạn , bài giảng bao gồm 7 chương , mỗi chương đều được trình bài cụ thể từ lý thuyết đến ví dụ , chưa bao gồm bài tập. các chương được trình bày dễ hiểu nhằm giúp người đọc hiểu rõ vấn đề nhất.
CHƢƠNG I: TỔNG QUAN VỀ LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG 1. Các kỹ thuật lập trình 1.1. Lập trình tuyến tính Cách tip cn n ca lp trình tuyn tính là ln t. Các câu lnh ca c thc hin tun t t u ti cui theo trình t xut hin, lnh này k tip lnh kia cho ti khi k c lp trình bng mã nh phân, s dng các công tc n liu i dng nh phân c th hin bng vic có hay không xut hin các l c trên mt tm bìa (punched card) ti các v c. Hình (I.1) Chƣơng trình máy tính trên bìa đục lỗ Sau này, khi yêu cu x lý d liu lc tu câu lc s dng các bit nh phân t ra rt hn ch. Vì v li ta s dng các câu lnh gn vi ting Anh gi là ngôn ng lch s dch các câu lnh này sang ngôn ng thc thi. Các ngôn ng lp trình c thit k ltrình làm các công vi Phn l i ngn. Đặc trƣng c thc hin mn theo li tun t. Bn thân i ngn và ít câu lnh ng: Ch có mt lung duy nht và các câu lc thc hin tun t theo lu Tính chất n, d hiu. Lp trình tuyn tính ng d n m: Khó thc hii vi các ng dng phc tp Ngôn ng lp trình tuyn tính không có kh m soát phm vi nhìn thy ca các d liu. Mi d liu là d liu toàn c b si bt k phn nào ca i không mong mua các phn t d liu trong mt dãy mã lnh ng làm cho các lp trình viên rt mt thi gian. 1.2. Lập trình cấu trúc Khi kh nhu cu thc thi c tp lên. Các ngôn ng lp trình c n cn thi s dng li t h lp trình tuyn tính. Tht ra, mt n lng c chép lp li mi khi chúng ta dùng trong nhiu t dài dòng. Thêm vi ng u khin nhn nhiu ch nên logic cu. V bn ch (còn gi là hàm hay th tc) thc hin các công vic ri rc trong quá trình lc t c gi c lp vi nhau càng nhiu càng tt, mi hàm có d liu và logic riêng. c chuyn giao gia các hàm thông qua các tham s, các hàm có th có các bin cc b mà bên ngoài phm vi ca hàm không th truy xuy, các hàm có th t chung v xây dng nên mt ng dng. Mt khái nim l p trình có cu trúc là sự trừu tƣợng hóa (Abstraction). S trng hóa có th t s vic mà không cn các chi tit bên trong ca nó. Trong mu trúc, chúng ta ch cn bit m c mt công vic c th . Còn làm th nào mà công vii thc hic là không quan trng, chng nào hàm còn tin cc thì còn có th dùng nó mà không cn phi bit nó thc hin ch c th u này gi là sự trừu tƣợng hóa theo chức năng (Functional abstraction) và là nn tng ca lp trình có cu trúc. Các ngôn ng lp trình cu trúc ph bin là Pascal, C và C++. Riêng C++ ngoài vic a lp trình cu trúc do k tha t a lng. c gi là ngôn ng lp trình na cu trúc, nng. Đặc trƣng n nht ca lp trình cu trúc th hin mi quan h: Chƣơng trình = Cấu trúc dữ liệu + Giải thuật Cu trúc d liu là cách t chc d liu, cách mô t i dng ngôn ng lp trình Gii thut là m thc hin mt công vinh i thut có quan h ph thuc vào cu trúc d liu: Mt cu trúc d liu ch phù hp vi mt s hn ch các gii thut. Ni cu trúc d liu thì phi gii thut cho phù hp. Mt gii thung phi mt cu trúc d liu nhnh. Tính chất M c gi thc hin nhiu ln trong m chính. c g thc hin theo mt th t bt kì, tu thuc vào gii thu thuc vào th t khai báo c Các ngôn ng lp trình cu trúc cung cp mt s cu trúc lu khi trình. Ƣu điểm a, d hiu, d theo dõi. i thut rõ ràng. Nhƣợc điểm Lp trình cu trúc không h tr vic s dng li mã ngun: Gii thut luôn ph thuc cht ch vào cu trúc d lii cu trúc d liu, phi thay i gii thui vit l Không phù hp vi các phn mm lu trúc vi các gii thut ch phù hp vi các bài toán nh, nm trong phm vi mt modul ci d án phn mm ln, lp trình cu trúc t ra không hiu qu trong vic gii quyt mi quan h a các modul ca phn mm. 2. Lập trình hƣớng đối tƣợng Xut phát t hai hn ch chính cp trình cu trúc: Không quc s i d liu khi có nhii mt bin chung. V c bit nghiêm trng khi các ng dng ngày càng ln, i ta không th kic s truy nhn các bin d liu chung. 8 Không tit kii: Gii thut gn lin vi cu trúc d liu, ni cu trúc d liu, s phi gii thui vit li mã u. khc phc hai hn ch này khi gii quyt các bài toán li ta xây dng mt p cn m ng, vi hai m chính: li hn ch s truy nhp t do vào d liu, không quc. Cho phép s dng li mã ngun, hn ch vic phi vit li mã t u cho các Vi lic thc hing thành lp t th Thu thp các thuc tính ca mng, gn các thu ng. Nhóm ng có các thuc tí nhau thành nhóm, loi b bt các thuc tính cá bit, ch gi li các thuc tính chung nhc gi là quá trình trng thành lp. liu cng vào lng. Mi thuc tính cng tr thành mt thuc tính ca lng. Vic truy nhp d lic thc hic trang b cho lc truy nhp t do trc tin d liu. i trong d liu cng, ta ch cc truy nhp thuc tính ca lp, mà không cn phi mã ngun c s dng lng. Vic cho phép s dng li mã nguc thc hi k tha trong lp trình Các lp có th c k tha nhau tn dng các thuc ca nhau. Trong lp dn xut (lc k tha) có th s dng lc ca lp (lp b lp khác k tha) mà không cn thit pht li mã ngun. Ngay c khi lp dn xunh ngc cho mình, l không b ng và không phi sa li bt kì mn mã ngun nào. Ngôn ng lng ph bin hin nay là Java và C++. Tuy nhiên, C++ mc n ca lp trình n không phi là ngôn ng lp trình thu ng. Java tht s là mt ngôn ng lp trình thun ng. Đặc trƣng Ln: liu: d lic t chc thành các thuc tính ca lng. Vic truy nhn d liu phc cng lp. S dng li mã ngun: vic s dng li mã nguc th hi k th này cho phép các lng có th k tha t các lng khác. Khi p k tha, có th s dc (mã ngun) ca các lp b k tha, mà không cn phi. Trong lng chúng ta có: Đối tƣợng = Phƣơng thức + Dữ liệu Ƣu điểm Lng có mt s m ni bt: liu b i t lic ng. Nu mun truy nhp vào d liu phi thông qua các c cho phép cng. Khi i cu trúc d liu ca m ng, không c i mã ngun ca ng khác, mà ch ci mt s hàm thành phn ci ng b i. u này hn ch s ng xu ca vii d lin ng khác Có th s dng li mã ngun, tit kim tài nguyên. Vì nguyên tc k tha cho phép các lp k tha s d c k tha t l ng c ca chính nó, mà không cn thit phi. Phù hp vi các d án phn mm ln, phc tp. 3. Lập trình hƣớng đối tƣợng bằng ngôn ngữ C# mô t các k thut trong l i ta ng s dng ngôn ng lp trình Java mt ngôn ng lp trình thung hoc C++. Tuy nhiên, vi hai mt ra: mt là d dàng tip c thi gian tìm hiu các k thut ln phát trin các ng dng trên h u hành windows, hai là s dng thành tho b công c phát trin Visual Studio.net ng dn t nên tác gi s dng ngôn ng l trình bày các k thut trong lng vi các lý do sau C# là ngôn ngữ đơn giản: C# loi b mt vài s phc tp và ri rm ca nhng ngôn ng nh Java và c++, bao gm vic loi b nhng macro, nhng template, a k tha, và lp c s o (virtual base class). Chúng là nhng nguyên nhân gây ra s nhm ln hay dn n nhng vn cho các ngi phát trin. C# là ngôn ngữ hiện đại: iu gì làm cho mt ngôn ng hin i? Nhng c tính nh là x lý ngoi l, thu gom b nh t ng, nhng kiu d liu m rng, và bo mt mã ngun là nhng c tính c mong i trong mt ngôn ng hin i. C# cha tt c nhng c tính trên. C# là ngôn ngữ hƣớng đối tƣợng: Nhng c im chính ca ngôn ng hng i tng (Object-oriented language) là s ng gói (encapsulation), s k tha (inheritance), và a hình (polymorphism). C# h tr tt c các c tính trên. C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo: C# c s dng cho nhiu các d án khác nhau nh là to ra ng dng x lý vn bn, ng dng ha, bn tí CHƢƠNG II: C# CƠ BẢN 1. Ứng dụng Console ng dng console giao tip vi ngi dùng thông qua bàn phím và không có giao din ngi dùng (UI), ging nh các ng dng thng thy trong Windows. tìm hiu các k thut trong lng và dùng ngôn ng mô t các k thut này ta vit các ng dng console Ti tìm hiu và s d xây dng các ng dng có giao di ha trên Windows. Ni dung này s c trình bày tron Ví dụ (II.1) Tạo dự án C# console đầu tiên c 1: M Visual Studio c 2: Chn menu File->New- to mt d án console based v và tên Solution là Hình (II.1) Hình (II.1) Cửa sổ tạo dự án mới c 3i tên l i using System; class Example { static void Main(string[] args) { Console.WriteLine("This is the my first program using C#”); Console.ReadLine(); } } c 5: Chn File -> Save c 6: Chn Build - dch d án c 7: Chn Debug - ch Màn hình hin th c Hình (II.2) Màn hình hiển thị Ví dụ (II.1) 2. Biến và hằng Khai báo và gán giá tr cho bin: <kiu> <tên bin> = <giá tr>; Khai báo và gán giá tr cho hng: const <kiu> <tên hng> = <giá tr>; tên bin và hng phi tuân theo các quy tc sau: Ch bu bng mt kí t (ch), hoc mt du gi , hoc mt kí t dollar Không có khong trng gia tên T kí t th hai, có th dùng các kí t (ch), ch s, du dollar, du gi Không trùng vi các t khoá Phân bit ch hoa ch ng 3. Kiểu dữ liệu C# phân tp hp kiu d liu này thành hai loi: Kiu d liu giá tr (value) và kiu d liu tham chiu (reference). i vi mt kiu d liu giá tr thì s c lu gi kích thc tht trong b nh ã cp phát là stack. Trong khi thì a ch ca kiu d liu tham chiu thì c lu trong stack nhng i tng tht s thì lu trong b nh heap Kiểu dữ liệu Số byte Mô tả byte 1 S nguyên không du giá tr t 0 255 char 2 Ký t Unicode bool 1 Giá tr logic true/false sbyte 1 S nguyên có du giá tr t-128 127 short 2 S nguyên có du giá tr t -32768 32767 ushort 2 S nguyên không du giá tr t 0 65536 int 4 S nguyên có du giá tr t 2,147,483,648 2,147,483,647 uint 4 S nguyên không du giá tr t 0 4,294,967,295 long 8 S nguyên có du giá tr t -9,223,372,036,854,775,808 9,223,372,036,854,775,807 ulong 8 S nguyên không du giá tr t 0 18,446,744,073,709,551,615 float 4 Kiu só thc du phng giá tr t -3.402823e38 3.402823e38 double 8 Kiu s thc du ph chính xác g t -1.79769313486232e308 1.79769313486232e308 decimal 8 Giá tr th chính xác ti 28 ch sc dùng trong tính toán tài chính, kii phi có hu t m hoc M theo sau giá tr Bảng (II.1) Các kiểu dữ liệu trong C# Khi khai báo bii to giá tr cho các bin thì chúng nhn giá tr ngnh Kiểu dữ liệu Giá trị ngầm định u s) 0 bool False char \ enum 0 ng) null Bảng (II.2) Giá trị ngầm định Ví dụ (II.2) sử dụng các kiểu dữ liệu (datatype) c 1: Thêm mt d án console vi n hành Hình (II.3) c 2: click chut phi vào project DataTypes -> set as Startup project i tên file class Hình (II.3) Các bƣớc thêm một dự án mới vào solution hiện hành c 4: Sa mã l using System; class Example { static void Main(string[] args) { int intVal; double dblVal; string strVal; intVal = 10; dblVal = 3.142; strVal = "Welcome"; Console.WriteLine("{0} is an integer value", intVal); Console.WriteLine("{0} is an double value", dblVal); Console.WriteLine("{0} is an string", strVal); Console.ReadLine(); } } c 5: Chn menu File - n c 6: Chn Build - build d án c 7: Chn Debug - ch [...]... niệm trừu tượng hóa c a đối tượng, x c định c u tr c của c c đối tượng thu c lớp thông qua vi c định nghĩa thu c tính và phương th c: Thu c tính c a lớp x c định c u tr c về trạng thái c a c c đối tượng thu c lớp (thành phần dữ liệu c a đối tượng thu c lớp) Phương th c của lớp x c định hành động c a c c đối tượng thu c lớp (thành phần hành động c a đối tượng thu c lớp) Ví dụ, lớp xe ô tô đư c mô tả... đa chiều Ở trên, chúng ta chỉ nói đến mảng c c số nguyên hay mảng c c đối tượng Tất c c c mảng này đều là mảng một chiều Mảng một chiều trong đó c c thành phần c a nó chỉ đơn giản là c c đối tượng kiểu giá trị hay đối tượng tham chiếu Mảng c thể đư c tổ ch c ph c tạp hơn trong đó mỗi thành phần là một mảng kh c, vi c tổ ch c này gọi là mảng đa chiều Mảng hai chiều đư c tổ ch c thành c c dòng và c t,... 1 Đối tƣợng Trong lập trình hướng đối tượng, người ta mô hình hóa tất c c c th c thể c n thiết trong hệ thống thành một khái niệm gọi là đối tượng C c đối tượng đư c sinh ra, và hoạt động trong quá trình chương trình đang chạy Mỗi đối tượng c c c trạng thái (state) và c c hành vi (method, action, behavior) C c đối tượng này c thể th c hiện c c hành vi trên dữ liệu c a mình (state) và tướng t c với... C# 4.1 Thu c tính (properties) Một đ c trưng c t lõi c a lập trình hướng đối tượng là tính đóng gói về dữ liệu Mỗi đối tượng đư c sinh ra c thành phần dữ liệu riêng (private) mà chỉ c bản thân chính đối tượng đó c thể truy nhập đư c (chỉ c thể truy c p bởi phương th c của chính đối tượng đó) Bên ngoài chỉ c thể truy nhập đư c nếu như bản thân đối tượng đó chủ động cung c p c c dịch vụ cho phép truy... mảng 3x4 Mảng đa chiều c kích kh c nhau C ng như giới thiệu trư c kích thư c của c c chiều c thể không bằng nhau, điều này kh c với mảng đa chiều c ng kích thư c Nếu hình dạng c a mảng đa chiều c ng kích thư c có dạng hình chữ nhật thì hình dạng c a mảng này không phải hình chữ nhật vì c c chiều c a chúng không điều nhau Khi chúng ta tạo một mảng đa chiều kích thư c kh c nhau thì chúng ta khai báo... x c định duy nhất cho mỗi đối tượng trong hệ thống, nhằm phân biệt c c đối tượng với nhau Trạng thái c a đối tượng: là sự tổ hợp c a c c giá trị c a c c thu c tính mà đối tượng đang c Hoạt động c a đối tượng: là c c hành động mà đối tượng c khả năng th c hiện đư c Ví dụ một chi c xe trong c a hàng c : Nhãn hiệu xe là Ford Màu sơn xe là trắng Năm sản xuất 2012 Mỗi đối tượng c một số hành động... hai chiều Mảng đa chiều không c ng kích thư c: trong mảng này c c dòng c thể không c ng kích thư c với nhau Mảng đa chiều c ng kích thƣ c Mảng đa chiều c ng kích thư c còn gọi là mảng hình chữ nhật (rectanguler array) Trong mảng hai chiều c điển, chiều đầu tiên đư c tính bằng số dòng c a mảng và chiều thứ hai đư c tính bằng số c t c a mảng Để khai báo mảng hai chiều, chúng ta c thể sử dụng c pháp... th c nhưng số tham số và kiểu tham số c thể kh c nhau Bư c 3: Chèn mã dưới vào lớp Program, dịch và chạy thử class Program { public static void Main() { // Khai báo một đối tượng c tên myCar Car myCar; // Tạo ra 1 đối tượng thu c lớp Car và gán địa chỉ vào myCar System.Console.WriteLine("Creating a Car object and assigning " +"its memory location to myCar"); myCar = new Car(); // Gán giá trị cho c c. .. Ford c thể th c hiện những hành động sau: Khởi động Dừng lại Chạy Để biểu diễn đối tượng trong lập trình hướng đối tượng, người ta trừu tượng hoá đối tượng để tạo nên khái niệm lớp đối tượng 2 Lớp Nếu như đối tượng là một th c thể c thể, tồn tại trong hệ thống c trạng thái và hành vi c thể thì lớp là một khái niệm trừu tượng, dùng để chỉ một tập hợp c c đối tượng c c ng một c u tr c (c c ng... t c với c c đối tượng kh c để giải quyết yêu c u c a bài toán Ví dụ: Trong bài toán quản lí buôn bán xe hơi c a một c a hàng kinh doanh, mỗi chi c xe đang c mặt trong c a hàng đư c coi là một đối tượng Chẳng hạn, một chi c xe nhãn hiệu “Ford”, màu trắng, giá 5000$ là một đối tượng Một đối tượng là một th c thể đang tồn tại trong hệ thống và đư c x c định bằng ba yếu tố: Định danh đối tượng: x c định . CHƢƠNG I: TỔNG QUAN VỀ LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG 1. Các kỹ thuật lập trình 1.1. Lập trình tuyến tính Cách tip cn n ca lp trình tuyn tính là ln t. Các. phc tp. 3. Lập trình hƣớng đối tƣợng bằng ngôn ngữ C# mô t các k thut trong l i ta ng s dng ngôn ng lp trình Java . quyt mi quan h a các modul ca phn mm. 2. Lập trình hƣớng đối tƣợng Xut phát t hai hn ch chính cp trình cu trúc: Không quc s i d liu