1. Trang chủ
  2. » Công Nghệ Thông Tin

Tổng quan về lập trình hướng đối tượng

15 1K 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Tổng quan về lập trình hướng đối tượng
Trường học Đại học Pennsylvania
Chuyên ngành Lập trình hướng đối tượng
Thể loại Bài luận
Thành phố Philadelphia
Định dạng
Số trang 15
Dung lượng 45,68 KB

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

Nội dung

Bài giảng lập trình hướng đối tượng - Thầy Cường Học viện bưu chính viễn thông TP HCM

Trang 1

Chương 1

Vài nét về sự phát triển của các ngôn ngữ lập trình

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

• Lớp và Đối tượng (Class & Object)

• Thông báo (Message)

• Tính đóng gói (Encapsulation)

• Tính kế thừa (Inheritance)

• Tính đa hình (Polymorphism)

Tổng quan về ngôn ngữ lập trình hướng đối tượng C++

• Xuất/Nhập (Console I/O)

• Chú thích (Comment)

• Khái niệm về quá tải hàm (Function Overloading)

• Các từ khoá (Keywords)

Trang 3

I/ Vài nét về sự phát triển của các ngôn ngữ lập trình

Ngôn ngữ lập trình phát triển qua hai lý do :

(1) để thích ứng với sự phát triển của môi trường (các hệ máy tính, các mạng)

(2) bổ sung tốt hơn cho các phương pháp lập trình

Vào thập niên 1940, chiếc máy tính điện tử đầu tiên ENIAC I (Electronic

Numerical Integrator and Calculator) được chế tạo tại ĐH Pennsylvania, USA,

bởi nhóm John W Mauchly và J Presper Eckert Các chương trình (program)

lúc đó được lập ra bằng các quá trình đóng mở các công tắc trên một bảng đặt

trước máy tính Ngôn ngữ máy (Machine language) với những chuổi nhị phân

0,1, có độ dài qui ước chỉ thích hợp với các chương trình nhỏ nhất

Sau đó John von Neumann (ĐH Princeton, USA) đã đề xuất khái niệm chương

trình lưu trữ trong bộ nhớ máy tính, ý tưởng này không những cải tiến tốc độ tính toán của máy tính lúc đó mà còn gợi ra những phương pháp linh hoạt để viết các

chương trình trong tương lai Hợp ngữ (Assembly language) được tạo ra cho phép

viết các chương trình dài hơn

• Cuối thập niên 1950 và đầu thập niên 1960, các ngôn ngữ cấp cao đã ra đời như

FORTRAN (FORmula TRANslator) dùng cho các tính toán về toán học và COBOL (COmmon Business Oriented Language) dùng trong lĩnh vực thương mại Ngôn ngữ BASIC (Beginners All-purpose Symbolic Instructional Code)

được phát triển lần đầu tiên trên các máy vi tính (micro-computer) nhằm giúp các sinh viên dễ học và tiếp cận với các chương trình máy tính

Các ngôn ngữ lập trình có cấu trúc như ALGOL và PASCAL ra đời giúp loại bỏ

các nhược điểm như rối loạn mã khó quản lý khi số lệnh trong chương trình dài hàng ngàn dòng

• Đầu thập niên 1970 ngôn ngữ C (do Denis Ritchie) được ra đời tại AT&T Bell Labs, USA Ngôn ngữ C tổng hợp các sức mạnh của các ngôn ngữ lập trình cấu trúc khác, dể hiểu, dể học và trở nên phổ biến với mọi người Tháng 12/1989, ngôn ngữ C được ANSI (American National Standards Insitute) chuẩn hoá và thông qua

Trang 4

Lập trình có cấu trúc (hay còn gọi là lập trình thủ tục) dựa vào các cấu trúc điều khiển (for, while, do, if, ) đã được định nghiã, các khối mã lệnh, ít dùng lệnh GOTO, các chương trình con hỗ trợ phép đệ qui và các biến cục bộ

Main program

Hình 1.1 Các chương trình hướng-thủ tục (lập trình cấu trúc)

Một chương trình lớn được chia thành nhiều chương trình con cho nhiều nhóm lập trình khác nhau cùng làm việc, với số dòng lệnh đến vài chục ngàn dòng, giúp dễ dàng bảo trì và phát triển phần mềm

Hình 1.2 Quan hệ giữa dữ liệu và hàm trong lập trình hướng-thủ tục

Đầu thập niên 1980, ngôn ngữ C++ (dựa trên ngôn ngữ C, Bjarne Stroustrup

giới thiệu ) và ngôn ngữ Smalltalk (Xerox PARK) được phát triển nhằm hổ trợ cho phương pháp lập trình hướng đối tượng (Object Oriented Programming),

phương pháp này đã được đề xuất từ cuối thập niên 1960 với ngôn ngữ Simula C++ được chuẩn hoá vào tháng 11/1997 và một chuẩn ANSI/ISO đã công bố

Trang 5

Lập trình hướng đối tượng sử dụng C++ tạo nên sự biến đổi sâu sắc, giúp lập trình viên có thể quản lý những chương trình lớn và phức tạp (hơn 100.000 dòng lệnh)

• Thập niên 1990, với sự phát triển mạnh mẽ của mạng World Wide Web, một cuộc cách mạng mới trong kỹ thuật lập trình đã xảy ra Ngôn ngữ JAVA do James Gosling, Patrick Naughton, Christ Warth, và Mike Sheridan phát triển tại hãng Sun Microsystem Tên chính thức được công bố vào năm 1995

• JAVA là ngôn ngữ lập trình hướng đối tượng không phụ thuộc vào thiết bị (các bộ vi xử lý, hệ điều hành, mạng, ) JAVA được thiết kế không phải để thay thế C++, mà để giải quyết những vấn đề đang đặt ra cho nền công nghệ tin học

Phương pháp lập trình hướng đối tượng cho phép phân chia một bài toán thành

các nhóm nhỏ có quan hệ với nhau Mỗi nhóm là một đối tượng chứa các lệnh và

dữ liệu riêng của nó có quan hệ với đối tượng đó

Nhờ đó, tính phức tạp của chương trình được giảm xuống, người lập trình có thể quản lý những chương trình rất lớn, chẳng hạn hệ điều hành Windows và những chương trình ứng dụng trên đó là những minh chứng cho phương pháp này

Functions

Data

Hình 1.3 Tổ chức của dữ liệu và các phương thức trong lập trình hướng-đối tượng

Các đặc tính quan trọng trong lập trình hướng đối tượng :

Trang 6

• Tính đóng gói (Encapsulation)

• Tính kế thừa (Inheritance)

• Tính đa hình (Polymorphism)

II/ Các khái niệm cơ bản của lập trình hướng đối tượng

1/ Lớp (Class) và Đối tượng (Object)

Các đối tượng là các thực thể (entities) cơ sở khi chạy chương trình (run-time) trong một hệ thống hướng đối tượng

Chúng có thể biểu diễn một con người, một vị trí, một tài khoản ngân hàng, một bảng dữ liệu hoặc bất kỳ một đề mục (item) nào mà chương trình cần dùng để thực hiện các tác vụ (tasks)

Ngày sinh

Điểm

Nhập()

HiểnThị()

Hình 1.4 Hai cách biểu diễn một đối tượng

Bên trong một chương trình có thể viết các dòng lệnh (instructions) để tạo ra các đối tượng Để máy tính có thể tạo ra đối tượng, chúng ta cần phải cung cấp một định nghiã, gọi là lớp

Lớp là một dạng khuôn (mould , template) qua đó chương trình máy tính dùng để tạo

ra các đối tượng.

Một đối tượng được gọi là một thể hiện (instance) của một lớp Một đối tượng là một

thể hiện chính xác của một lớp

Khi định nghiã một lớp, còn được xem là tạo ra một kiểu dữ liệu mới từ người dùng

Trang 7

Khi khai báo một đối tượng, có nghiã là tạo ra một biến có kiểu dữ liệu là một lớp

Các thành viên (members) của một lớp bao gồm dữ liệu (data) và các hàm hay

phương thức (function, method)

Nguyên

SINHVIEN

Hanh

Hình 1.5 Lớp SINHVIEN và 2 đối tượng Nguyên & Hanh

2/ Thông báo (Message)

Để yêu cầu một đối tượng thực thi một tác vụ, cần gởi một thông báo đến nó

Chẳng hạn, chúng ta gởi một thông báo new đến lớp SINHVIEN để tạo ra một thể hiện (một đối tượng SINHVIEN), sau đó gởi một thông báo Nhập() đến đối tượng

của lớp SINHVIEN để nhập các dữ liệu về sinh viên

3/ Tính đóng gói (Encapsulation)

Việc tổ chức dữ liệu (data) và các hàm (function) hay phương thức (method) trong

một đơn vị duy nhất (gọi là lớp) được xem là tính chất đóng gói

Đóng gói dữ liệu (Data Encapsulation) là một trong những đặc tính nổi bật của một lớp Dữ liệu không thể truy xuất được ở bên ngoài lớp và chỉ những phương thức bên trong lớp đó mới có thể truy xuất được chúng

Trong một đối tượng, dữ liệu và hàm hoặc cả hai có thể là riêng của đối tượng đó hoặc chung

SINHVIEN SINHVIEN

Trang 8

Dữ liệu và hàm riêng là thuộc về đối tượng đó và chỉ được truy cập bởi các thành phần bên trong của đối tượng

Với dữ liệu và hàm chung, các bộ phận khác của chương trình có thể truy cập đến chúng

Những chức năng này cung cấp một giao tiếp giữa dữ liệu của đối tượng và chương trình Sự cách ly này của dữ liệu từ việc truy xuất trực tiếp bởi chương trình được gọi

là sự che dấu dữ liệu (data hiding)

4/ Tính kế thừa (Inheritance)

Tính kế thừa là quá trình một đối tượng có thể có được các tính chất của một đối tượng khác Nghiã là, một đối tượng có thể kế thừa các tính chất tổng quát để bổ sung thêm các đặc điểm của nó

Tính kế thừa hổ trợ khái niệm phân loại theo thứ bậc (hierarchical classification) , đóng vai trò quan trọng trong lập trình hướng đối tượng

Hình 1.6 Hệ thống thứ bậc kế thừa (đơn giản) trong Học viện

Lớp cơ sở (base class) : “Học Viện Công nghệ Bưu Chính –Viễn Thông” Lớp dẫn xuất (derived class) : “Khối Sinh viên” ,

“Khối Giáo viên” ,

“Khối Nhân viên”

5/ Tính đa hình (Polymorphism)

Học Viện Công nghệ Bưu Chính –Viễn Thông

Trang 9

Tính đa hình là tính chất cho phép một tên (đối tượng, hàm, toán tử) được dùng cho hai hay nhiều mục đích khác nhau có quan hệ về phương diện kỹ thuật

Tính đa hình cho phép thực hiện quá tải hàm (function overloading) hay quá tải toán

tử (operator overloading)

Tính đa hình thể hiện ý tưởng "một giao diện cho nhiều phương thức"

III/ Tổng quan về ngôn ngữ lập trình hướng đối tượng C++

Do C++ được xây dựng từ ngôn ngữ C với lớp, nên mọi phần tử của C đều được chứa trong C++

Các hàm căn bản của C++ đều chứa trong thư viện iostream.h

1/ Xuất/Nhập trong C++ (Console I/O)

Từ khoá cout, cin là các stream được định nghiã trước trong iostream.h, tự động liên

kết với console khi chương trình C++ bắt đầu chạy

cout tương đương với stdout, và cin tương đương với stdin trong ngôn ngữ C

Cú pháp

cout << expression ; // xuất nội dung của biểu thức ra màn hình

cin >> variable ; // nhập một giá trị từ bàn phím vào biến variable

với << toán tử xuất

>> toán tử nhập

expression biểu thức C++ bất kỳ

variable biến

Ví dụ 1.1

Trang 10

#include <iostream.h>

int main()

{

int i = 10, j = 20; double d = 99.101;

cout << "Here are some values: ";

cout << i;

cout << ' ';

cout << j;

cout << ' ';

cout << d;

return 0;

}

Ví dụ 1.2 Xuất nhiều hơn một giá trị trong một biểu thức nhập/xuất đơn

#include <iostream.h>

int main()

{

int i, j; double d;

i = 10;

j = 20;

d = 99.101;

cout << "Here are some values: ";

cout << i << ' ' << j << ' ' << d;

return 0;

}

Ví dụ 1.3 Khi nhập, các mục riêng lẻ phải cách nhau khoảng trắng

Với chuổi, toán tử nhập sẽ ngừng khi gặp ký tự khoảng trắng đầu tiên

#include <iostream.h>

Trang 11

int main()

{

int i; float f; char s[80];

cout << "Enter an integer, float, and string: ";

cin >> i >> f >> s;

cout << "Here's your data: ";

cout << i << ' ' << f << ' ' << s;

return 0;

}

Ví dụ 1.4 Với toán tử nhập >> , mọi dữ liệu nhập được đưa vào bộ đệm (buffer) cho đến khi nhấn phím ENTER

#include <iostream.h>

int main()

{

char ch;

cout << "Enter keys, x to stop.\n";

do {

cout << " : ";

cin >> ch;

} while (ch != 'x');

return 0;

}

2/ Chú thích (comment) trong C++

• Chú thích một dòng lệnh //

Ví dụ 1.5 Xác định một số nguyên là số chẵn hay lẻ

Trang 12

#include <iostream.h>

int main()

{

int num; // this is a C++, single-line comment

// read the number

cout << "Enter number to be tested: ";

cin >> num;

// see if even or odd

if((num%2)==0) cout << "Number is even\n";

else cout << "Number is odd\n";

return 0;

}

• Chú thích nhiều dòng lệnh /* */

Ví dụ 1.6

/* This is a multiline comment inside of which // is nested a single-line comment

Here is the end of the multiline comment

*/

3/ Khái niệm về quá tải hàm (Function Overloading)

Hai hoặc nhiều hàm dùng chung một tên Có 3 loại :

• Cùng số đối số

• Khác số đối số

• Khác số đối số và khác kiểu dữ liệu

Mục đích :

• giúp giảm bớt tính phức tạp của chương trình bằng cách cho phép các phép toán có liên hệ được tham chiếu cùng một tên

Trang 13

• đạt được tính đa dạng thời gian biên dịch

Ví dụ 1.7 Cùng số đối số

Trình biên dịch sẽ chọn phiên bản thích hợp của hàm để gọi

#include <iostream.h>

// Overload abs() three ways

int abs(int n) ;

long abs(long n) ;

double abs(double n) ;

int main()

{

cout << "Absolute value of -10: " << abs(-10) << "\n\n";

cout << "Absolute value of -10L: " << abs(-10L) << "\n\n";

cout << "Absolute value of -10.01: " << abs(-10.01) << "\n\n";

return 0;

}

// abs() for ints

int abs(int n)

{

cout << "In integer abs()\n";

return n<0 ? -n : n;

}

// abs() for longs

long abs(long n)

{

cout << "In long abs()\n";

return n<0 ? -n : n;

}

// abs() for doubles

double abs(double n)

Trang 14

{

cout << "In double abs()\n";

return n<0 ? -n : n;

}

Ví dụ 1.8 Khác số đối số và khác kiểu dữ liệu

#include <iostream.h>

void date(char *date); // date as a string

void date(int month, int day, int year); // date as numbers

int main()

{

date("8/23/99");

date(8, 23, 99);

return 0;

}

// Date as string

void date(char *date)

{

cout << "Date: " << date << "\n";

}

// Date as integers

void date(int month, int day, int year)

{

cout << "Date: " << month << "/";

cout << day << "/" << year << "\n";

}

Ví dụ 1.9 Hai hàm chỉ khác nhau ở kiểu dữ liệu trả về làm cho trình biên dịch

không thể lựa chọn kiểu đúng để gọi

Trang 15

// This is incorrect and will not compile

int f1(int a);

double f1(int a);

int main()

{

f1(10); // which function does the compiler call???

return 0;

}

4/ Các từ khoá (keywords) trong C++

Ngoài các từ khoádùng trong ngôn ngữ C, ANSI C++ sử dụng các từ khoá thường dùng như sau :

asm delete new protected throw

bool false operator public true

catch friend overload template try

class inline private this virtual

Ý nghiã của chúng sẽ được lần lượt giải thích và minh hoạ trong các chương sau của bài giảng

Ngày đăng: 21/08/2012, 15:34

HÌNH ẢNH LIÊN QUAN

Hình 1.1   Các chương trình hướng-thủ tục (lập trình cấu trúc) - Tổng quan về lập trình hướng đối tượng
Hình 1.1 Các chương trình hướng-thủ tục (lập trình cấu trúc) (Trang 4)
Hình 1.2   Quan hệ giữa dữ liệu và hàm trong lập trình hướng-thủ tục - Tổng quan về lập trình hướng đối tượng
Hình 1.2 Quan hệ giữa dữ liệu và hàm trong lập trình hướng-thủ tục (Trang 4)
Hình 1.3    Tổ chức của dữ liệu và các phương thức trong lập trình hướng-đối tượng - Tổng quan về lập trình hướng đối tượng
Hình 1.3 Tổ chức của dữ liệu và các phương thức trong lập trình hướng-đối tượng (Trang 5)
Hình 1.5         Lớp SINHVIEN và 2 đối tượng Nguyên  &amp;  Hanh - Tổng quan về lập trình hướng đối tượng
Hình 1.5 Lớp SINHVIEN và 2 đối tượng Nguyên &amp; Hanh (Trang 7)
Hình 1.6  Hệ thống thứ bậc kế thừa (đơn giản) trong Học viện - Tổng quan về lập trình hướng đối tượng
Hình 1.6 Hệ thống thứ bậc kế thừa (đơn giản) trong Học viện (Trang 8)

TỪ KHÓA LIÊN QUAN

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

w