GI
This presentation is the property of its rightful owner.
Sponsored Links
1 / 44

GI ỚI THI ỆU M Ô N H ỌC L ẬP TR ÌNH H ƯỚNG ĐỐI T ƯỢNG PowerPoint PPT Presentation


  • 95 Views
  • Uploaded on
  • Presentation posted in: General

GI ỚI THI ỆU M Ô N H ỌC L ẬP TR ÌNH H ƯỚNG ĐỐI T ƯỢNG Th ời l ượng 30 ti ết l ý thuy ết (2 chỉ), 30 ti ết th ực h ành (1 ch ỉ ) Thi cu ối k ỳ l ý thuy ết : Tr ắc nghi ệm (100%) th ực h ành : l àm b ài t ập l ớn + b áo c áo + điểm danh (100%)

Download Presentation

GI ỚI THI ỆU M Ô N H ỌC L ẬP TR ÌNH H ƯỚNG ĐỐI T ƯỢNG

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Gi i thi u m n h c l p tr nh h ng i t ng

  • GIỚI THIỆU MÔN HỌC

  • LẬP TRÌNH HƯỚNGĐỐI TƯỢNG

  • Thời lượng 30 tiết lý thuyết (2 chỉ), 30 tiết thực hành (1 chỉ)

  • Thi cuối kỳ lý thuyết: Trắc nghiệm (100%)

  • thực hành: làm bài tập lớn + báo cáo+ điểm danh (100%)

  • Tài liệu tham khảo:

  • Lập trình hướng đối tượng với C++, Lê Đăng Hưng, Tạ Tuấn Anh…

  • C how to program, Deitel, International edition, Prentice Hall, 2004


Gi i thi u m n h c l p tr nh h ng i t ng

  • GIỚI THIỆU MÔN HỌC

  • LẬP TRÌNH HƯỚNGĐỐI TƯỢNG

  • Nội dung môn học

  • Lập trình hướngđối tượng – các khái niệm cơ bản

  • Các mở rộng của C++ so với C

  • Đối tượng và lớp

  • Định nghĩa toán tử trên lớp

  • Kỹ thuật thừa kế

  • Khuôn hình


Gi i thi u m n h c l p tr nh h ng i t ng

  • CHƯƠNG 1:

  • CÁC KHÁI NIỆM CƠ BẢN

  • LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ LẬP TRÌNH CẤU TRÚC

  • Lập trình cấu trúc:

  • Chương trình = Cấu trúc dữ liệu + giải thuật

  • Lập trình hướng đối tượng (Object oriented programming)

  • Đặt trọng tâm vào đối tượng


Gi i thi u m n h c l p tr nh h ng i t ng

  • CHƯƠNG 1:

  • CÁC KHÁI NIỆM CƠ BẢN

  • LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ LẬP TRÌNH CẤU TRÚC

  • Các đặc điểm của lập trình hướng đối tượng:

  • Tập trung vào dữ liệu thay cho các hàm

  • Chương trình được chia thành các đối tượng

  • Cấu trúc dữ liệu được thiết kế sao cho đặc tả được đối tượng

  • Các hàm thao tác trên các vùng dữ liệu của đối tượng được gắn với cấu dữ liệu đó

  • Dữ liệu được đóng gói lại, được che giấu và không cho phép các hàm ngoại lại truy nhập tự do

  • Các đối tượng tác động và trao đổi thông tin với nhau qua các hàm

  • Có thể dể dàng bổ sung dữ liệu và các hàm mới vào đối tượng nào đó khi cần thiết

  • Chương trình được thiết kế theo cách tiếp cận từ dưới lên


Gi i thi u m n h c l p tr nh h ng i t ng

  • CHƯƠNG 1:

  • CÁC KHÁI NIỆM CƠ BẢN

  • LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ LẬP TRÌNH CẤU TRÚC

  • Đối tượng (object)

  • Đối tượng là sự kết hợp giữa dữ liệu và phương thức - method (thủ tục, hàm) thao tác trên dữ liệu đó

  • Đối tượng = dữ liệu + phương thức

  • Lớp (class)

  • Lớp là một tập các đối tượng có cấu trúc dữ liệu và các phương thức giống nhau. Một đối tượng là một thể hiện cụ thể (instance) của một lớp.

  • Trong lập trình ta có thể coi lớp như một kiểu dữ liệu, các đối tượng là biến có kiểu của lớp

  • Đóng gói

  • Đóng gói về chức năng: sử dụng các hàm hay thủ tục mà không cần biết đến nội dung bên trong nó, người dùng chỉ cần biết chức năng và các tham số cần truyền vào để gọi hàm

  • Đóng gói dữ liệu: với mỗi đối tượng người dùng không thể truy cập trực tiếp vào các thành phần dữ liệu của nó mà phải thông qua các phương thức


Gi i thi u m n h c l p tr nh h ng i t ng

  • CHƯƠNG 1:

  • CÁC KHÁI NIỆM CƠ BẢN

  • LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ LẬP TRÌNH CẤU TRÚC

  • Thừa kế (inheritance)

  • Kế thừa trong lập trình hướng đối tượng cho phép định nghĩa một lớp mới trên cơ sở lớp đã tồn tại và bổ sung thêm các phương thức hay thành phần dữ liệu mới

  • Đa hình (polymorphime)

  • Các đối tượng khác nhau ứng xử với cùng một hành vi là khác nhau

  • Ví dụ:

  • - việc đi của xe đạp và xe hơi

  • - Tính diện tích của tam giác và đa giác


Gi i thi u m n h c l p tr nh h ng i t ng

  • CHƯƠNG 1:

  • CÁC KHÁI NIỆM CƠ BẢN

  • LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ LẬP TRÌNH CẤU TRÚC

  • Các ưu điểm của LTHĐT

  • Tính thừa kế

  • Xây dựng phần mềm theo quy trình không còn dựa chủ yếu vào kinh nghiệm -> rút ngắn thời gian, tăng năng suất

  • Tính đóng gói tăng tính an toàn

  • Ánh xạ các đối tượng từ thế giới thực vào chương trình

  • Cách tiếp cận theo HĐT dể dàng cài đặt

  • Dể mở rộng và nâng cấp

  • Thuận tiện mô tả giao tiếp giữa hệ thống với thế giới bên ngoài

  • Quản lý được độ phức tạp của chương trình


Gi i thi u m n h c l p tr nh h ng i t ng

  • CHƯƠNG 1:

  • CÁC KHÁI NIỆM CƠ BẢN

  • 2. CÁC NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

  • Các ưu điểm của LTHĐT

  • Tính thừa kế

  • Xây dựng phần mềm theo quy trình không còn dựa chủ yếu vào kinh nghiệm -> rút ngắn thời gian, tăng năng suất

  • Tính đóng gói tăng tính an toàn

  • Ánh xạ các đối tượng từ thế giới thực vào chương trình

  • Cách tiếp cận theo HĐT dể dàng cài đặt

  • Dể mở rộng và nâng cấp

  • Thuận tiện mô tả giao tiếp giữa hệ thống với thế giới bên ngoài

  • Quản lý được độ phức tạp của chương trình


Gi i thi u m n h c l p tr nh h ng i t ng

  • CHƯƠNG 2:

  • NHỮNG MỞ RỘNG CỦA C++

  • CÁC ĐIỂM KHÔNG TƯƠNG THÍCH GIỮA C++ VÀ ANSI C

  • 1.2 Khai báo hàm nguyên mẫu

    • Tronc C chỉ cần khai báo tên hàm và giá trị trả về, không cần danh sách kiểu của các tham số

    • C++ khai báo hàm nguyên mẫu

      Với C++ một lời gọi hàm chỉ được chấp nhận khi trình biên dịch biết được kiểu của các tham số, kiểu của giá trị trả về


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

CÁC ĐIỂM KHÔNG TƯƠNG THÍCH GIỮA C++ VÀ ANSI C

1.2 Khai báo hàm nguyên mẫu

Chuyển kiểu tựđộng theo nguyên tắc sau:

char -> int ->longint -> float ->double

Ví dụ:

double ham(int , double) /* khai báo hàm ham*/

….

main()

{

int n;

char c;

double x, x1, x2,x3;

x1=ham(n,x); /* không có chuyển đổi kiểu*/

x2=ham(c,x); /* có chuyển đổi kiểu từ char->int*/

x3=ham(x,n); /* có chuyển đổi kiểu từ double ->int và từ int thành double */

….


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

CÁC ĐIỂM KHÔNG TƯƠNG THÍCH GIỮA C++ VÀ ANSI C

1.3 Sự tương thích giữa con trỏ void và các con trỏ khác

Trong ANSI C, kiểu void tương thích với các kiểu con trỏ khác cả hai chiều

Ví dụ:

void *g;

int *i;

Phép gán sau là hợp lệ

g=i ;

i=g ;

Trong C++ chỉ có chuyển đổi kiểu ngầm định từ một kiểu con trỏ tùy ý thành void*, còn ngược lại phải thực hiện chuyển đổi kiểu tường minh.

Ví dụ:

g=i;

i=(int*)g;


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++

Trong tệp tiêu đề isotream.h người ta định nghĩa hai đối tượng cout và cin tương ứng với hai thiết bị chuẩn ra vào được sử dụng cùng với << và >>. Thường thì ta hiểu cout là màn hình còn cin là bàn phím

2.1 Ghi dữ liệu ra thiết bị chuẩn cout

Ví dụ 1 :

#include <iostream.h>

main()

{

cout << “Hello C++”;

}


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++

2.1 Ghi dữ liệu ra thiết bị chuẩn cout

Sử dụng cout và << đưa ra các giá trị khác nhau


Gi i thi u m n h c l p tr nh h ng i t ng

  • CHƯƠNG 2:

  • NHỮNG MỞ RỘNG CỦA C++

    2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++

  • 2.1 Các khả năng viết ra trên cout

  • Có thể sử dụng toán tử << cùng với cout để đưa ra màn hình giá trị của một biểu thức có các kiểu sau :

    • Kiểu cơ sở (char, int, float, double)

    • Xâu ký tự (char *)

    • Con trỏ (trừ con trỏ char *)

  • Trong trường hợp muốn đưa ra địa chỉ của xâu ký tự phải thực hiện việc chuyển đổi kiểu tường minh (char*)->(void*)


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++

2.1 Các khả năng viết ra trên cout


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++

2.2 Đọc dữ liệu từ thiết bị chuẩn cin

Ví dụ 1:

int n;

cin>>n;

Ví dụ 2:

int n ;

float p ;

char c ;

cin>>c>>n>>p ;

Dùng toán từ >> để nhập dữ liệu cho các kiểu char, int, float, double và char* 


Gi i thi u m n h c l p tr nh h ng i t ng

  • CHƯƠNG 2:

  • NHỮNG MỞ RỘNG CỦA C++

    2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++

  • 2.2 Đọc dữ liệu từ thiết bị chuẩn cin

  • Giống với hàm scanf(), cin tuân theo một số qui ước dùng trong việc phân tích các ký tự

    • Các giá trị số được phân cách bởi : SPACE, TAB, CR, LF. Khi gặp một ký tự không hợp lệ như dấu “.” đối với số nguyên, chữ cái đối với số, ... sẽ kết thúc việc đọc cin, ký tự không hợp lệ này sẽ được xem xét trong lần đọc sau

    • Đối với gía trị xâu ký tự, dấu phân cách cũng là SPACE, TAB, CR còn đối với gía trị ký tự, dấu phân cách là dấu CR. Trong hai trường hợp này không có khái niệm “ký tự không hợp lệ”. Mã sinh ra do nhấn phím Enter của lần nhập trước vẫn được xét trong lần nhập chuỗi hay ký tự tiếp theo và do đó sẽ có nguy cơ không nhập được đúng giá trị mong muốn khi đưa ra lệnh nhập xâu lý tự hoặc ký tự ngay sau các lệnh nhập cá giá trị khác. Giải pháp khắc phục ta dùng một trong hai lệnh sau

  • fflush(stdin) ; // khai báo trong stdio.h

  • cin.clear(); // hàm thành phần của lớp cin


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++

2.2 Đọc dữ liệu từ thiết bị chuẩn cin

Ví dụ :

#include<iostream.h>

void main()

{

int n;

float x;

char t[81] ;

do

{

cout << “Nhap vao mot so nguyen, mot xau, mot so thuc : ” ;

cint >>n>>t>>x ;

cout <<  “Da nhap ”<<n<< “, ”<<t<< “va ”<<x<<“\n ” ;

} while (n) ;

}


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

3. NHỮNG TIỆN ÍCH CHO NGƯỜI LẬP TRÌNH

3.1 Ghi chú thích cuối dòng

C++ dùng // để chỉ ra một dòng là chú thích

Ví dụ

cout << ” Xin chao  \n“  ; // xin chao

3.2 Khai báo mọi nơi


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

3. NHỮNG TIỆN ÍCH CHO NGƯỜI LẬP TRÌNH

3.1 Toán tử phạm vi ::


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

4. HÀM INLINE

Trong C++ ta có thể định nghĩa các hàm được thay thế trực tiếp thành mã lệnh máy tại chổ gọi (inline) mỗi lần được tham chiếu. Ưu điểm của hàm inline là chúng không đòi hỏi các thủ tục bổ sung khi gọi hàm và trả về giá trị. Do vậy, hàm inline được thực hiện nhanh hơn so với các hàm thông thường


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

4. HÀM INLINE


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

5. THAM CHIẾU

Ngôn ngữ C++ giới thiệu một khái niệm mới là tham chiếu ”reference”. Một tham chiếu có thể là một biến, tham số hình thức của hàm hay dùng làm giá trị trả về của một hàm.

5.1 Tham chiếu tới một biến

Ví dụ:

int n ;

int &p=n ; //p là một biến tham chiếu, p tham chiếu tới vùng nhớ nơi n lưu trữ

Nếu viết:

n=7;

cout<<p;

Kết quả in ra là:


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

5. THAM CHIẾU

5.1 Tham chiếu tới một biến

Tham chiếu và con trỏ giống nhau vì cùng chỉ đến các đối tượng có địa chỉ, cùng được cập phát địa chỉ khi khai báo. Nhưng cách sử dụng thì khác nhau. Khi nói tới tham chiếu ta phải gán nó với một biến nào đó đã khai báo, trong khi con trỏ thì không nhất thiết phải khởi tạo giá trị cho nó. Con trỏ có thể tham chiếu tới nhiều biến khác nhau con biến tham chiếu chỉ có thể tham chiếu tới một biến duy nhất lúc khởi tạo nó.


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

5. THAM CHIẾU

5.1 Tham chiếu tới một biến


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

5. THAM CHIẾU

5.2 Truyền tham số cho hàm bằng tham chiếu


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

5. THAM CHIẾU

5.2 Truyền tham số cho hàm bằng tham chiếu


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

5. THAM CHIẾU

5.3 Giá trị trả về của hàm là tham chiếu

Định nghĩa hàm:

<type> & fct (…)

{

return <biến có phạm vi toàn cục>

}


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

5. THAM CHIẾU

5.3 Giá trị trả về của hàm là tham chiếu


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

6. ĐỊNH NGHĨA CHỒNG HÀM

C++ cho cho phép sử dụng một tên cho nhiều hàm khách nhau ta gọi đó là sự chồng hàm.


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

6. ĐỊNH NGHĨA CHỒNG HÀM

Trường hợp có nhiều hàm trùng tên trong chương trình, việc xác định hàm nào được gọi tuân theo nguyên tắc sau:

Tương ứng thật sự

Tương ứng dữ liệu số nhưng có sự chuyển đổi kiểu tự động

char và short -->int; float -->int.

c. Các chuyển đổi kiểu được C và C++ chấp nhận

d. Chuyển đổi kiểu do người dùng định nghĩa


Gi i thi u m n h c l p tr nh h ng i t ng

CHƯƠNG 2:

NHỮNG MỞ RỘNG CỦA C++

7. THAM SỐ NGẦMĐỊNH TRONG LỜI GỌI HÀM


Gi i thi u m n h c l p tr nh h ng i t ng

  • CHƯƠNG 2:

  • NHỮNG MỞ RỘNG CỦA C++

    7. THAM SỐ NGẦMĐỊNH TRONG LỜI GỌI HÀM

  • Các tham số có giá trị ngầmđịnh phải được đặt ở cuối trong danh sách các tham số của hàm

  • Các giá trị ngầm định của tham số được khai báo, không phải trong phần định nghĩa hàm


Gi i thi u m n h c l p tr nh h ng i t ng

  • CHƯƠNG 2:

  • NHỮNG MỞ RỘNG CỦA C++

    7. THAM SỐ NGẦMĐỊNH TRONG LỜI GỌI HÀM

  • Nếu muốn khai báo giá trị ngầmđịnh cho một biến con trỏ thì phải viết dấu * và = cách nhau ít nhất một khoảng trắng

  • Các giá trị ngầmđịnh có thể là một biểu thức :

    • VD:

    • float x;

    • int n;

    • void fct(float = n*2+1.5);

  • Chồng hàm và gọi hàm với tham số có giá trị ngầm định có thể gây ra lỗi biên dịch khi chương trình không xác định được hàm phù hợp:


  • Gi i thi u m n h c l p tr nh h ng i t ng

    • CHƯƠNG 2:

    • NHỮNG MỞ RỘNG CỦA C++

      7. THAM SỐ NGẦMĐỊNH TRONG LỜI GỌI HÀM


    Gi i thi u m n h c l p tr nh h ng i t ng

    • CHƯƠNG 2:

    • NHỮNG MỞ RỘNG CỦA C++

      8. BỔ SUNG THÊM TOÁN TỬ QUẢN LÝ BỘ NHỚ ĐỘNG: new và delete

      8.1 Toán tử cấp phát bộ nhớ động new

    • Khai báo

    • int *adr;

    • Chỉ thị

    • adr=new int;

    • Cấp phát vùng nhớ cần thiết cho một phần tử có kiểu int và gán cho adr địa chỉ tương ứng

    • Trong C có lệnh tương đương

    • adr=(int *) malloc(sizeof(int));


    Gi i thi u m n h c l p tr nh h ng i t ng

    • CHƯƠNG 2:

    • NHỮNG MỞ RỘNG CỦA C++

      8. BỔ SUNG THÊM TOÁN TỬ QUẢN LÝ BỘ NHỚ ĐỘNG: new và delete

      8.1 Toán tử cấp phát bộ nhớ động new

    • Khai báo

    • char *adc;

    • Chỉ thị

    • adc=new char[100];

    • Cấp phát vùng nhớ đủ cho một mảng chứa 100 ký tự và đặt địa chỉ đầu của vùng nhớ cho biến adc.

    • Trong C có lệnh tương đương

    • adc=(char *) malloc(100);


    Gi i thi u m n h c l p tr nh h ng i t ng

    • CHƯƠNG 2:

    • NHỮNG MỞ RỘNG CỦA C++

      8. BỔ SUNG THÊM TOÁN TỬ QUẢN LÝ BỘ NHỚ ĐỘNG: new và delete

      8.1 Toán tử cấp phát bộ nhớ động new

    • Hai cách sử dụng new

    • Dạng 1:

    • new type;

    • Giá trị trả về là con trỏ đến vị trí tương ứng khi cấp phát thành công, ngược lại trả về NULL

    • Dạng 2:

    • new type[n]; // n là biểu thức nguyên không âm

    • Cấp phát vùng nhớ đủ để chứa n thành phần kiểu type và trả lại con trỏ đến đầu vùng nhớ đó nếu cấp phát thành công


    Gi i thi u m n h c l p tr nh h ng i t ng

    • CHƯƠNG 2:

    • NHỮNG MỞ RỘNG CỦA C++

      8. BỔ SUNG THÊM TOÁN TỬ QUẢN LÝ BỘ NHỚ ĐỘNG: new và delete

      8.1 Toán tử giải phóng vùng nhớ động delete

    • Một vùng nhớ được cấp phát bằng new phải được giải phóng bằng delete.

    • delete adr;

    • delete adc;


    Gi i thi u m n h c l p tr nh h ng i t ng

    • CHƯƠNG 2:

    • NHỮNG MỞ RỘNG CỦA C++

      7. BỔ SUNG THÊM TOÁN TỬ QUẢN LÝ BỘ NHỚ ĐỘNG:new và delete


    Gi i thi u m n h c l p tr nh h ng i t ng

    • CHƯƠNG 2:

    • NHỮNG MỞ RỘNG CỦA C++

      7. BỔ SUNG THÊM TOÁN TỬ QUẢN LÝ BỘ NHỚ ĐỘNG: new và delete


  • Login