1. Trang chủ
  2. » Cao đẳng - Đại học

Hướng dẫn tự học môn lập trình hướng đối tượng đại học kinh tế quốc dân

146 787 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 146
Dung lượng 1,35 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

KẾ HOẠCH GIẢNG DẠY 1 Chương 1 9 6 3 Học trên phòng máy  Khái niệm lập trình hướng đối tượng  Phân biệt phương pháp lập trình hướng đối tượng với phương pháp lập trình kiểu cấu tr

Trang 1

TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN

VIệN CÔNG NGHệ THÔNG TIN KINH Tế

THÔNG TIN GIẢNG VIÊN

 Nhóm GV: TS Phạm Minh Hoàn

TS Nguyễn Trung Tuấn

ThS Nguyễn Quỳnh Mai

 Địa chỉ: BM Công nghệ thông tin - C100, ĐH Kinh tế

Quốc dân, 207 Đường Giải Phóng, Hai Bà Trưng, Hà Nội

Trang 2

KẾ HOẠCH GIẢNG DẠY

1 Chương 1 9 6 3

Học trên phòng máy

 Khái niệm lập trình hướng đối tượng

 Phân biệt phương pháp lập trình hướng đối tượng với phương pháp lập trình kiểu

cấu trúc

 Mục tiêu của lập trình hướng đối tượng

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

 Giới thiệu các ngôn ngữ lập trình hướng đối tượng: Ngôn ngữ C++

 Phương pháp phân tích bài toán theo cách tiếp cận hướng đối tượng

1.2 Sự mở rộng của C++

 Khả năng khai báo linh hoạt

 Toán tử ép kiểu

 Khả năng vào/ra mới của C++

 Bổ sung toán tử quản lý bộ nhớ động: new, delete

Trang 3

 Phạm vi truy nhập đến các thành phần của lớp cơ sở

3.2 Hàm tạo, hàm huỷ đối với tính kế thừa

 Hàm tạo của lớp dẫn xuất

 Hàm huỷ của lớp dẫn xuất

Trang 4

CHƯƠNG 4: TÍNH ĐA HÌNH

4.1 Phương thức ảo và tương ứng bội

 Định nghĩa phương thức ảo

 Quy tắc gọi phương thức ảo

 Tương ứng bội

 Liên kết động

4.2 Lớp cơ sở ảo

 Lớp cơ sở ảo và phương thức ảo

 Hàm tạo, hàm hủy và lớp cơ sở ảo

CHƯƠNG 5: DÕNG DỮ LIỆU NHẬP XUẤT

5.1 Mô hình tổng quát của I/O streams trong C++

Trang 5

CHƯƠNG 6: XỬ LÝ NGOẠI LỆ

6.1 Xử lý ngoại lệ trong C++

 Xử lý lỗi theo kiểu truyền thống

 Giới thiệu về ngoại lệ

 Khai báo lớp ngoại lệ

 Hàm tạo, hàm hủy của lớp ngoại lệ

hàng tuần và tham gia thảo luận trên lớp

 Kiểm tra giữa kỳ: 20% số điểm

Hình thức: kiểm tra, lập trình trên máy tính

 Thi kết thúc học phần: 70% số điểm

Hình thức: lập trình trên máy tính

 Điều kiện dự thi:

Sinh viên phải có mặt trên lớp tối thiểu 80% số tiết học

Trang 6

TÀI LIỆU THAM KHẢO

1. Phạm Minh Hoàn, Bài giảng môn lập trình hướng đối

tượng, Bộ môn Công nghệ thông tin, trường Đại học

Kinh tế Quốc dân

TÀI LIỆU THAM KHẢO

5. Bruce Eckel, President, Thinking in C++,

Volume 1 and 2, 2nd Edition, January 13,

2000

6. Ivar Jacobson, Object - Oriented Software

Engineering, Addison-Wesley Publishing

Company, 1992

7. Michael Blaha, William Premerlani, Object -

Oriented Modeling and Design for Database

Applications, Prentice Hall, 1998

8. Jim Keogh & Mario Giannini Biên dịch Ngọc

Trang 7

Trình bày nhược điểm của phương pháp lập

trình cấu trúc, cách tiếp cận hướng đối tượng

Trình bày đặc điểm, khái niệm cơ bản của lập

trình hướng đối tượng và phương pháp phân tích

bài toán theo cách tiếp cận hướng đối tượng

Trình bày khái niệm ngôn ngữ lập trình hướng

và một vài mở rộng của ngôn ngữ lập trình

Trang 8

NỘI DUNG CHƯƠNG 1

1.1 Lập trình hướng đối tượng

 Tiếp cận hướng đối tượng

 Nhược điểm của phương pháp lập trình hướng thủ tục

 Định nghĩa lập trình hướng đối tượng

 Khái niệm cơ bản lập trình hướng đối tượng

 Các bước giải bài toán theo phương pháp lập trình hướng đối tượng

 Giới thiệu ngôn ngữ lập trình hướng đối tượng

1.2 Mở rộng của ngôn ngữ C++

 Khai báo linh hoạt

 Toán tử ép kiểu

 Xuất/nhập dữ liệu (Vào/ra dữ liệu)

 Toán tử quản lý bộ nhớ động: new, delete

quan hệ với nhau

Đối với việc tổ chức chương trình, ứng

dụng có thể được định nghĩa như một tập

các thực thể - hoặc các đối tượng, sao cho

quá trình tái tạo những suy nghĩa là gần sát

Trang 9

NHƯợC ĐIểM CủA LậP TRÌNH HƯớNG THủ

TụC

Lập trình hướng thủ tục (LTHTT) là cách tiếp cận theo

các hàm chức năng Một hệ thống phần mềm gồm một

dãy các công việc cần thực hiện như đọc dữ liệu, tính

toán, xử lý, lập báo cáo và in ấn kết quả v.v Mỗi

công việc đó sẽ được thực hiện bởi một số hàm nhất

định

Chương trình khó kiểm soát và khó khăn trong việc bổ

sung, nâng cấp chương trình

Mô hình được xây dựng theo cách tiếp cận hướng thủ

tục không mô tả được đầy đủ, trung thực hệ thống

trong thực tế

Phương pháp LTHTT đặt trọng tâm vào hàm là hướng

tới hoạt động sẽ không thực sự tương ứng với các thực

thể trong hệ thống của thế giới thực 17

Oriented Programming - OOP) là

phương pháp lập trình lấy đối tượng

làm nền tảng để xây dựng thuật giải,

xây dựng chương trình

trình xoay quanh dữ liệu của hệ thống

Trang 10

tin cấu trúc dữ liệu và các thao tác

Trang 11

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

KHÁI NIệM CƠ BảN

 Lớp là khái niệm tĩnh

 Đối tượng là khái niệm động

 Đối tượng được xác định trong bộ nhớ

của máy tính

 Đối tượng được tạo ra để xử lý thông

tin, thực hiện nhiệm vụ được thiết kế,

sau đó bị hủy bỏ khi đối tượng đó hết

KHÁI NIệM CƠ BảN

 Trừu tượng hóa dữ liệu và bao gói thông tin

Trừu tượng hóa là cách biểu diễn những đặc tính chính và

bỏ qua những chi tiết vụn vặt hoặc những giải thích

Bao gói thông tin là việc đóng gói dữ liệu và các phương

thức vào một đơn vị cấu trúc lớp

 Dữ liệu được tổ chức sao cho thế giới bên ngoài (các đối

tượng ở lớp khác) không truy nhập vào được

 Phương thức của lớp sẽ đóng vai trò như là giao diện giữa dữ

liệu của đối tượng và phần còn lại của chương trình

 Nguyên tắc bao gói dữ liệu để ngăn cấm sự truy nhập trực

tiếp trong lập trình được gọi là sự che giấu thông tin

Trang 12

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

KHÁI NIệM CƠ BảN

Kế thừa là quá trình mà các đối tượng của lớp này

được quyền sử dụng một số tính chất của các đối

tượng của lớp khác

 Sự kế thừa cho phép định nghĩa một lớp mới trên

cơ sở các lớp đã tồn tại Lớp mới này, ngoài những

thành phần được kế thừa, sẽ có thêm những thuộc

khái niệm có thể sử dụng với nhiều

chức năng khác nhau

 Tương ứng bội đóng vai quan trọng

trong việc tạo ra các đối tượng có cấu

trúc bên trong khác nhau nhưng cùng

Trang 13

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

KHÁI NIệM CƠ BảN

Liên kết động là dạng liên kết các thủ

tục và hàm khi chương trình thực hiện

lời gọi tới các hàm, thủ tục đó

 Trong liên kết động, nội dung của

đoạn chương trình ứng với thủ tục,

hàm sẽ không được biết cho đến khi

thực hiện lời gọi tới thủ tục, hàm đó.

KHÁI NIệM CƠ BảN

 Truyền thông báo cho một đối tượng

là yêu cầu đối tượng thực hiện một

việc gì đó

 Sự trao đổi thông tin chỉ có thể thực

hiện trong thời gian đối tượng tồn tại

Trang 14

CÁC BƯớC GIảI BÀI TOÁN THEO

OOP

 Xác định các dạng đối tượng (lớp) của bài toán

 Tìm kiếm các đặc tính chung (dữ liệu chung) trong

các dạng đối tượng này, những gì chúng cùng nhau

chia sẻ

 Xác định lớp cơ sở dựa trên cơ sở các đặc tính chung

của các dạng đối tượng

 Xây dựng các lớp dẫn xuất chứa các thành phần,

những đặc tính không chung còn lại của các dạng đối

tượng từ lớp cơ sở Ngoài ra, ta còn đưa ra các lớp có

quan hệ với các lớp cơ sở và lớp dẫn xuất

GIớI THIệU NGÔN NGữ OOP

 Ngôn ngữ lập trình hướng đối tượng là ngôn

ngữ bao gồm 4 khái niệm trụ cột của lập trình

hướng đối:

1 Tính bao gói thông tin (Encapsulation)

2 Tính che dấu dữ liệu (Data hiding)

Trang 15

KHAI BÁO LINH HOạT

Lệnh khai báo biến có thể đặt bất

kỳ chỗ nào trong chương trình

trước khi các biến được sử dụng

khối trong đó biến được khai báo

Trang 16

MỞ RỘNG CỦA NGÔN NGỮ C++

KHAI BÁO LINH HOạT

Ví dụ: Nhập một dãy số thực rồi sắp xếp theo thứ tự

Trang 17

MỞ RỘNG CỦA NGÔN NGỮ C++

TOÁN Tử ÉP KIểU

 Ngoài phép chuyển kiểu bắt buộc

đƣợc viết trong C theo cú pháp:

3

1 2 1

1    

Trang 18

for (int i=1;i<=n;++i)

s+= float(1)/float(i); //chuyen kieu theo C++

3

1 2

 cout được định nghĩa trước như một đối

tượng biểu diễn cho thiết bị xuất chuẩn

của C++ là màn hình,

 cout được sử dụng kết hợp với toán tử

chèn << để hiển thị giá trị các biểu thức

Trang 19

Toán tử cin được định nghĩa trước như

một đối tượng biểu diễn cho thiết bị vào

 Để sử dụng các loại toán tử và phương thức nói

trên cần khai báo tập tin dẫn hướng iostream.h

#include iostream.h;

 Để nhập một chuỗi không quá n ký tự và lưu vào

mảng một chiều s (kiểu char) có thể dùng hàm

Trang 20

 Quy định độ rộng tối thiểu để hiển thị k vị trí cho giá trị

(nguyên, thực, chuỗi) dùng hàm: setw(k)

 Hàm này cần đặt trong toán tử xuất và nó chỉ có hiệu lực cho

một giá trị đƣợc in gần nhất Các giá trị in ra tiếp theo sẽ có

Trang 21

MỞ RỘNG CỦA NGÔN NGỮ C++

XUấT / NHậP Dữ LIệU

Ví dụ: Nhập một danh sách n thí sinh (n<=100)

Dữ liệu mỗi thí sinh gồm họ tên, các điểm thi môn

1, môn 2, môn 3 Sau đó in danh sách thí sinh theo

thứ tự giảm dần của tổng điểm

#include <iostream> // thu vien cout, cin

#include <conio.h> // thu vien getch()

#include <iomanip.h> // thu vien setw

#include <string.h> // thu vien ham chuoi ky tu

Trang 22

tg=ts[i]; ts[i]=ts[j]; ts[j]=tg;

} cout<< "\ Danh sach thi sinh sau khi sap xep :";

Trang 23

TOÁN Tử QUảN LÝ Bộ NHớ ĐộNG: NEW,

 C++ đưa thêm một cách thức mới để

thực hiện việc cấp phát và giải phóng

 Trong đó: tên kiểu là kiểu dữ liệu của biến con trỏ,

nó có thể là: các kiểu dữ liệu chuẩn như int, float,

double, char, hoặc các kiểu do người lập trình

Trang 24

TOÁN Tử QUảN LÝ Bộ NHớ ĐộNG: NEW,

 Trong đó: tên kiểu là kiểu dữ liệu của biến con trỏ,

nó có thể là: các kiểu dữ liệu chuẩn như int, float,

double, char, hoặc các kiểu do người lập trình

Biến con trỏ = new kiểu[n];

 Trong đó n là số nguyên dương xác định

Trang 25

TOÁN Tử QUảN LÝ Bộ NHớ ĐộNG: NEW,

Trang 26

TOÁN Tử QUảN LÝ Bộ NHớ ĐộNG: NEW,

DELETE

Ví dụ: Viết chương trình minh hoạ cách dùng new

để cấp phát bộ nhớ chứa n thí sinh Mỗi thí sinh là một

cấu trúc gồm các trường ht(họ tên), sobd(số báo

danh), và td(tổng điểm) Chương trình sẽ nhập n, cấp

phát bộ nhớ chứa n thí sinh, kiểm tra lỗi cấp phát bộ

nhớ, nhập n thí sinh, sắp xếp thí sinh theo thứ tự giảm

của tổng điểm, in danh sách thí sinh sau khi sắp xếp,

Trang 27

TOÁN Tử QUảN LÝ Bộ NHớ ĐộNG: NEW,

cin.get (ts[i].ht,20); //cin(ts[i].ht);

cout << "so bao danh";

Trang 28

TOÁN Tử QUảN LÝ Bộ NHớ ĐộNG: NEW,

HÀM NộI TUYếN (INLINE)

thành các đơn vị độc lập

độ thực hiện chương trình: cấp phát vùng

nhớ cho các tham số và biến cục bộ,

truyền dữ liệu của các tham số cho các đối,

giải phóng vùng nhớ trước khi thoát khỏi

Trang 29

MỞ RỘNG CỦA NGÔN NGỮ C++

HÀM NộI TUYếN (INLINE)

Chú ý:

 Trong mọi trường hợp, từ khóa inline phải xuất hiện trước

các lời gọi hàm thì trình biên dịch mới biết cần xử lý hàm

theo kiểu inline

Ví dụ: Hàm f() trong chương trình sau sẽ không phải là

hàm nội tuyến vì inline viết sau lời gọi hàm

 Cách làm này sẽ tăng tốc độ chương trình do không

phải thực hiện các thao tác có tính thủ tục khi gọi hàm

 Hàm inline làm tăng khối lượng bộ nhớ chương trình

(nhất là đối với các hàm nội tuyến có nhiều câu lệnh)

Vì vậy chỉ nên dùng hàm inline đối với các hàm có nội

dung đơn giản

 Không phải khi gặp từ khoá inline là chương trình

dịch nhất thiết phải xử lý hàm theo kiểu nội tuyến Từ

khoá inline chỉ là một từ khoá gợi ý cho chương trình

dịch chứ không phải là một mệnh lệnh bắt buộc

Trang 30

MỞ RỘNG CỦA NGÔN NGỮ C++

HÀM NộI TUYếN (INLINE)

 Ví dụ 2: Chương trình sau sử dụng hàm inline để tính

cout<<"\n Hinh chu nhat thu "<<i+1<<":";

cout<<"\n Do dai hai canh "<<a[i]<<"va"<<b[i];

cout<<"\n dien tich "<<dt[i];

cout<<"\n chu vi "<<cv[i];

Trang 31

HÀM TảI BộI (FUNCTION

OVERLOADING)

tên và có tập tham số khác nhau (về

số lượng các tham số hoặc kiểu của

tham số)

 Trình biên dịch căn cứ vào số lượng

và kiểu các tham số để gọi hàm có

đúng tên và đúng các tham số tương

nguyên và max của một dãy số thực Trong

chương trình có 6 hàm: hai hàm dùng để nhập

dãy số nguyên và dãy số thực có tên chung là

nhapds, bốn hàm: tính max 2 số nguyên, tính

max 2 số thực, tính max của dãy số nguyên,

tính max của dãy số thực được đặt chung một

Trang 32

HÀM TảI BộI (FUNCTION

void nhapds(int *x, int n);

void nhapds(double *x, int n);

int max(int x,int y);

double max(double x, double y);

Trang 33

HÀM TảI BộI (FUNCTION

Trang 34

HÀM TảI BộI (FUNCTION

cout<<"\n So phan tu nguyen n: "; cin>>ni;

cout<<"\n Nhap day so nguyen: "; nhapds(a,ni);

cout<<"\n So phan tu so thuc: "; cin>>nd;

cout<<"\n Nhap day so thuc: "; nhapds(x,nd);

maxi = max(a,ni);

maxd = max(x,nd);

cout<<"\n Max day so nguyen ="<<maxi;

cout<<"\n Max day so thuc="<<maxd;

 Bài 1: Viết chương trình thực hiện các

yêu cầu sau đây:

 Nhập dữ liệu cho các sinh viên (dùng cấu

trúc danh sách liên kết đơn), các thông tin

của sinh viên bao gồm: mã sinh viên, họ tên,

lớp, điểm trung bình

 Chương trình có sử dụng toán tử new và

delete

 In ra danh sách sinh viên có sắp xếp vị thứ

theo điểm trung bình

Trang 35

MỞ RỘNG CỦA NGÔN NGỮ C++

BÀI TậP

 Bài 2: Viết chương trình thực hiện các

yêu cầu sau đây:

 Nhập dữ liệu cho các sinh viên (dùng mảng

động), các thông tin của sinh viên bao gồm:

mã sinh viên, họ tên, lớp, điểm trung bình

 Chương trình có sử dụng toán tử new và

delete

 In ra danh sách sinh viên có sắp xếp vị thứ

theo điểm trung bình

 In ra những sinh viên có điểm trung bình

Định nghĩa, các khái niệm cơ bản và các bước

giải bài toán theo phương pháp lập trình hướng

đối tượng

Giới thiệu ngôn ngữ lập trình hướng đối tượng,

khai báo linh hoạt, toán tử ép kiểu, xuất/nhập dữ

liệu (vào/ra dữ liệu) với iostream, toán tử quản lý

bộ nhớ động: new, delete Hàm inline và hàm

tải bội (Function overloading) 70

Trang 36

của đối tƣợng, con trỏ mà mảng đối tƣợng

Trình bày khái niệm thành phần tĩnh, dữ

Trang 37

NỘI DUNG CHƯƠNG 2

nghĩa, có thể tạo ra nhiều đối tượng khác

nhau, mỗi đối tượng có vùng nhớ riêng 74

Trang 38

Dữ liệu và hàm thành viên được

gọi chung là các thành phần của

Trang 39

LỚP

THÀNH PHẦN DỮ LIỆU

Khai báo các thuộc tính (dữ liệu)

đƣợc thực hiện nhƣ khai báo biến có

kiểu chuẩn hoặc kiểu ngoài chuẩn đã

Trang 40

(kiểu void) hoặc có thể trả về một giá trị có

kiểu bất kỳ, kể cả giá trị kiểu đối tượng, con trỏ

đối tượng, tham chiếu đối tượng

bất kỳ: kiểu chuẩn, kiểu ngoài chuẩn, kiểu đối

tượng của chính phương thức, con trỏ hoặc tham

chiếu đến kiểu đối tượng này

Trang 41

LỚP

THÀNH PHẦN PHƯƠNG THỨC (HÀM)

Chú ý :

 Các thành phần dữ liệu khai báo là

private nhằm bảo đảm nguyên lý che dấu

thông tin, bảo vệ an toàn dữ liệu của lớp,

không cho phép các hàm bên ngoài xâm

nhập vào dữ liệu của lớp

 Các hàm thành phần khai báo là public

Trang 42

cout<<”\nNhap hoanh do (cot) va

tung do (hang) cua diem:”;

Trang 43

vùng: vùng sở hữu riêng (private) và vùng

dùng chung (public) để quy định phạm vi sử

Trang 44

LỚP

CON TRỎ THIS

 Mỗi hàm thành phần của lớp có một tham số ẩn,

đó là con trỏ this Con trỏ this trỏ đến từng đối

Con trỏ this là tham số thứ nhất của hàm

thành phần Khi một lời gọi hàm thành

phần đƣợc phát ra bởi một đối tƣợng thì

tham số truyền cho con trỏ this chính là

địa chỉ của đối tƣợng đó

Ví dụ: Xét một lời gọi tới hàm nhapsl():

Ngày đăng: 22/01/2017, 12:02

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm