bài giảng lập trình hướng đối tượng c

80 198 1
bài giảng lập trình hướng đối tượng c

Đ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

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 tip cn n ca lp trình tuyn tính là ln t. Các câu lnh ca  c thc hin tun t t u ti cui theo trình t xut hin, lnh này k tip lnh kia cho ti khi k c lp trình bng mã nh phân, s dng các công tc  n   liu i dng nh phân c th hin bng vic có hay không xut hin các l c trên mt tm bìa (punched card) ti 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 cu x lý d liu lc tu câu lc s dng các bit nh phân t ra rt hn ch. Vì v li ta s dng các câu lnh gn vi ting Anh gi là ngôn ng lch s dch các câu lnh này sang ngôn ng  thc thi. Các ngôn ng lp trình c thit k  ltrình làm các công vi Phn l i ngn. Đặc trƣng  c thc hin mn theo li tun t. Bn thân i ngn và ít câu lnh  ng: Ch có mt lung duy nht và các câu lc thc hin tun t theo lu Tính chất  n, d hiu. Lp trình tuyn tính ng d n  m: Khó thc hii vi các ng dng phc tp Ngôn ng lp trình tuyn tính không có kh m soát phm vi nhìn thy ca các d liu. Mi d liu là d liu toàn c b si  bt k phn nào ca i không mong mua các phn t d liu trong mt dãy mã lnh ng làm cho các lp trình viên rt mt thi gian. 1.2. Lập trình cấu trúc Khi kh nhu cu thc thi c tp  lên. Các ngôn ng lp trình c  n cn thi s dng li t h lp trình tuyn tính. Tht ra, mt n lng c chép lp li mi khi chúng ta dùng trong nhiu   t dài dòng. Thêm vi   ng  u khin  nhn nhiu ch nên logic cu. V bn ch  (còn gi là hàm hay th tc) thc hin các công vic ri rc trong quá trình lc t c gi c lp vi nhau càng nhiu càng tt, mi hàm có d liu và logic riêng. c chuyn giao gia các hàm thông qua các tham s, các hàm có th có các bin cc b mà bên ngoài phm vi ca hàm không th truy xuy, các hàm có th t chung v xây dng nên mt ng dng. Mt khái nim l      p trình có cu trúc là sự trừu tƣợng hóa (Abstraction). S trng hóa có th  t s vic mà không cn các chi tit bên trong ca nó. Trong mu trúc, chúng ta ch cn bit m c mt công vic c th . Còn làm th nào mà công vii thc hic là không quan trng, chng nào hàm còn tin cc thì còn có th dùng nó mà không cn phi bit nó thc hin ch c th u này gi là sự trừu tƣợng hóa theo chức năng (Functional abstraction) và là nn tng ca lp trình có cu trúc. Các ngôn ng lp trình cu trúc ph bin là Pascal, C và C++. Riêng C++ ngoài vic a lp trình cu trúc do k tha t a lng. c gi là ngôn ng lp trình na cu trúc, nng. Đặc trƣng n nht ca lp trình cu trúc th hin  mi quan h: Chƣơng trình = Cấu trúc dữ liệu + Giải thuật   Cu trúc d liu là cách t chc d liu, cách mô t i dng ngôn ng lp trình  Gii thut là m thc hin mt công vinh i thut có quan h ph thuc vào cu trúc d liu:  Mt cu trúc d liu ch phù hp vi mt s hn ch các gii thut.  Ni cu trúc d liu thì phi gii thut cho phù hp.  Mt gii thung phi mt cu trúc d liu nhnh. Tính chất  M c gi thc hin nhiu ln trong m chính.   c g thc hin theo mt th t bt kì, tu thuc vào gii thu thuc vào th t khai báo c  Các ngôn ng lp trình cu trúc cung cp mt s cu trúc lu khi trình. Ƣu điểm  a, d hiu, d theo dõi.  i thut rõ ràng. Nhƣợc điểm  Lp trình cu trúc không h tr vic s dng li mã ngun: Gii thut luôn ph thuc cht ch vào cu trúc d lii cu trúc d liu, phi thay i gii thui vit l  Không phù hp vi các phn mm lu trúc vi các gii thut ch phù hp vi các bài toán nh, nm trong phm vi mt modul ci d án phn mm ln, lp trình cu trúc t ra không hiu qu trong vic gii quyt mi quan h a các modul ca phn mm. 2. Lập trình hƣớng đối tƣợng Xut phát t hai hn ch chính cp trình cu trúc:  Không quc s i d liu khi có nhii mt bin chung. V   c bit nghiêm trng khi các ng dng ngày càng ln, i ta không th kic s truy nhn các bin d liu chung. 8  Không tit kii: Gii thut gn lin vi cu trúc d liu, ni cu trúc d liu, s phi gii thui vit li mã  u.  khc phc hai hn ch này khi gii quyt các bài toán li ta xây dng mt   p cn m        ng, vi hai m  chính:   li hn ch s truy nhp t do vào d liu, không quc.  Cho phép s dng li mã ngun, hn ch vic phi vit li mã t u cho các  Vi lic thc hing thành lp t th  Thu thp các thuc tính ca mng, gn các thu ng.  Nhóm ng có các thuc tí nhau thành nhóm, loi b bt các thuc tính cá bit, ch gi li các thuc tính chung nhc gi là quá trình trng thành lp.   liu cng vào lng. Mi thuc tính cng tr thành mt thuc tính ca lng.  Vic truy nhp d lic thc hic trang b cho lc truy nhp t do trc tin d liu.  i trong d liu cng, ta ch cc truy nhp thuc tính ca lp, mà không cn phi mã ngun c s dng lng. Vic cho phép s dng li mã nguc thc hi k tha trong lp trình   Các lp có th c k tha nhau  tn dng các thuc ca nhau.  Trong lp dn xut (lc k tha) có th s dng lc ca lp  (lp b lp khác k tha) mà không cn thit pht li mã ngun.  Ngay c khi lp dn xunh ngc cho mình, l  không b ng và không phi sa li bt kì mn mã ngun nào. Ngôn ng lng ph bin hin nay là Java và C++. Tuy nhiên, C++ mc n ca lp trình n không phi là ngôn ng lp trình thu   ng. Java tht s là mt ngôn ng lp trình thun ng. Đặc trƣng Ln:   liu: d lic t chc thành các thuc tính ca lng. Vic truy nhn d liu phc cng lp.  S dng li mã ngun: vic s dng li mã nguc th hi k th này cho phép các lng có th k tha t các lng khác. Khi p k tha, có th s dc (mã ngun) ca các lp b k tha, mà không cn phi. Trong lng chúng ta có: Đối tƣợng = Phƣơng thức + Dữ liệu Ƣu điểm Lng có mt s m ni bt:   liu b i t  lic  ng. Nu mun truy nhp vào d liu phi thông qua các c cho phép cng.  Khi i cu trúc d liu ca m  ng, không c  i mã ngun ca ng khác, mà ch ci mt s hàm thành phn ci ng b i. u này hn ch s ng xu ca vii d lin ng khác   Có th s dng li mã ngun, tit kim tài nguyên. Vì nguyên tc k tha cho phép các lp k tha s d    c k tha t l   ng c ca chính nó, mà không cn thit phi.  Phù hp vi các d án phn mm ln, phc tp. 3. Lập trình hƣớng đối tƣợng bằng ngôn ngữ C#    mô t   các k thut trong l     i ta ng s dng ngôn ng lp trình Java  mt ngôn ng lp trình thung hoc C++. Tuy nhiên, vi hai mt ra: mt là d dàng tip c thi gian tìm hiu các k thut ln  phát trin các ng dng trên h u hành windows, hai là s dng thành tho b công c phát trin Visual Studio.net ng dn t nên tác gi s dng ngôn ng l trình bày các k thut trong lng vi các lý do sau C# là ngôn ngữ đơn giản: C# loi b mt vài s phc tp và ri rm ca nhng ngôn ng nh Java và c++, bao gm vic loi b nhng macro, nhng template, a k tha, và lp c s o (virtual base class). Chúng là nhng nguyên nhân gây ra s nhm ln hay dn n nhng vn  cho các ngi phát trin. C# là ngôn ngữ hiện đại: iu gì làm cho mt ngôn ng hin i? Nhng c tính nh là x lý ngoi l, thu gom b nh t ng, nhng kiu d liu m rng, và bo mt mã ngun là nhng c tính c mong i trong mt ngôn ng hin i. C# cha tt c nhng c tính trên. C# là ngôn ngữ hƣớng đối tƣợng: Nhng c im chính ca ngôn ng hng i tng (Object-oriented language) là s ng gói (encapsulation), s k tha (inheritance), và a hình (polymorphism). C# h tr tt 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 dng cho nhiu các d án khác nhau nh là to ra ng dng x lý vn bn, ng dng  ha, bn tí CHƢƠNG II: C# CƠ BẢN 1. Ứng dụng Console ng dng console giao tip vi ngi dùng thông qua bàn phím và không có giao din ngi dùng (UI), ging nh các ng dng thng thy trong Windows.  tìm hiu các k thut trong lng và dùng ngôn ng  mô t các k thut này ta vit các ng dng console Ti tìm hiu và s d xây dng các ng dng có giao di ha trên Windows. Ni 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: Chn menu File->New- to mt 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 3i 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: Chn File -> Save c 6: Chn Build - dch d án c 7: Chn Debug - ch Màn hình hin 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 bin: <kiu> <tên bin> = <giá tr>; Khai báo và gán giá tr cho hng: const <kiu> <tên hng> = <giá tr>; tên bin và hng phi tuân theo các quy tc sau:  Ch bu bng mt kí t (ch), hoc mt du gi , hoc mt kí t dollar  Không có khong trng gia tên  T kí t th hai, có th dùng các kí t (ch), ch s, du dollar, du gi  Không trùng vi các t khoá  Phân bit ch hoa ch ng 3. Kiểu dữ liệu C# phân tp hp kiu d liu này thành hai loi: Kiu d liu giá tr (value) và kiu d liu tham chiu (reference). i vi mt kiu d liu giá tr thì s c lu gi kích thc tht trong b nh ã cp phát là stack. Trong khi  thì a ch ca kiu d liu tham chiu thì c lu trong stack nhng i tng tht s thì lu trong b nh heap Kiểu dữ liệu Số byte Mô tả byte 1 S nguyên không du giá tr t 0 255 char 2 Ký t Unicode bool 1 Giá tr logic true/false sbyte 1 S nguyên có du giá tr t-128 127 short 2 S nguyên có du giá tr t -32768 32767 ushort 2 S nguyên không du giá tr t 0 65536 int 4 S nguyên có du giá tr t 2,147,483,648 2,147,483,647 uint 4 S nguyên không du giá tr t 0 4,294,967,295 long 8 S nguyên có du giá tr t -9,223,372,036,854,775,808 9,223,372,036,854,775,807 ulong 8 S nguyên không du giá tr t 0 18,446,744,073,709,551,615 float 4 Kiu só thc du phng giá tr t -3.402823e38 3.402823e38 double 8 Kiu s thc du ph chính xác g t -1.79769313486232e308 1.79769313486232e308 decimal 8 Giá tr th chính xác ti 28 ch sc dùng trong tính toán tài chính, kii phi có hu t m hoc M theo sau giá tr Bảng (II.1) Các kiểu dữ liệu trong C# Khi khai báo bii to giá tr cho các bin thì chúng nhn giá tr ngnh 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 mt d án console vi n hành Hình (II.3) c 2: click chut phi 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: Sa 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: Chn menu File -  n c 6: Chn Build - build d án c 7: Chn 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 tip cn n ca lp trình tuyn tính là ln t. Các. phc tp. 3. Lập trình hƣớng đối tƣợng bằng ngôn ngữ C#    mô t   các k thut trong l     i ta ng s dng ngôn ng lp trình Java . quyt mi quan h a các modul ca phn mm. 2. Lập trình hƣớng đối tƣợng Xut phát t hai hn ch chính cp trình cu trúc:  Không quc s i d liu

Ngày đăng: 17/05/2015, 14:26

Tài liệu cùng người dùng

Tài liệu liên quan