Bài ôn Thi lập trình hướng đối tượng

2 1.1K 16
Bài ôn Thi lập trình hướng đối tượng

Đang tải... (xem toàn văn)

Thông tin tài liệu

Bài ôn môn LTHĐT Câu 1 : Thiết kế các lớp máy tính ( maytinh ) , sử dụng tính chất kế thừa , phải có ít nhất 3 phương thức riêng cho lớp đó và bắt buộc phải có ít nhất hàm tạo và hàm hủy . Class maytinh { int luongCPU; public : nhapdata(); xulydata(); xuatdata(); maytinh();// Hàm tạo ~maytinh();//Hàm hủy }; Class iphone : public maytinh { public : nhapdata();// Hàm phủ quyết }; // hàm nạp chồng : void func( int x ) { std::cout << " call int\n"; } void func( float x ) { std::cout << " call float\n"; } void get_process_fake( void( *func )( int x ) ) { func( 1 );// Khi nạp vào giá trị 1 thì hàm tự động biết đó là giá trị int } int main() { get_process_fake( &func ); return 0; } Câu 2 : Những điểm mới của lập trình hướng đối tượng so với lập trình cấu trúc ( hoặc có thể gọi là Lập Trình Hướng Thủ Tục ) ? - Tuy rằng có thể khá khó khăn trong việc tiếp cận ban đầu, nhưng Lập Trình Hướng Đối Tượng thực sự cung cấp một phương pháp tiếp cận dễ dàng hơn để xử lý dữ liệu. Bởi vì một object có thể lưu trữ dữ liệu nội bộ, các biến mà không cần phải thông qua các hàm để có thể hoạt động đúng chức năng. - Ngoài ra, vì có nhiều trường hợp sử dụng cùng một class tại cùng một thời điểm, do đó việc xử lý dữ liệu lớn trở nên dễ dàng hơn rất nhiều ( Cho ví dụ, bạn hãy tưởng tượng bạn có thông tin hai người đang được xử lý trong một file ) . - Lập trình cấu trúc thì các giá trị của mảng sẽ được xử lý và trả về từ mỗi hàm riêng lẻ, do vậy dễ phát sinh lỗi , Để giải quyết vấn đề này, chúng ta phải tối ưu việc sử dụng càng ít mã lệnh cho lập trình viên càng tốt. Chỉ những thông tin thật sự cần thiết cho các thao tác hiện hành mới nên đưa vào xử lý trong các hàm. - Thông tin chi tiết của từng hàm không cần truyền đến hoặc trả về từ nhiều phương thức, mà chỉ những thông tin thực sự cần thiết được truyền đến cho từng phương thức. - Trên quy mô nhỏ, sự khác biệt này có thể sẽ không nhiều, nhưng nếu như ứng dụng của bạn ngày càng phát triển lớn hơn, Lập Trình Hướng Đối Tượng sẽ giúp giảm đáng kể khối lượng công việc của bạn, nếu nó được thực thi đúng. - Một lợi ích khác của Hướng Đối Tượng là khả năng dễ dàng đóng gói và phân loại. Mỗi class nói chung có thể được giữ trong 1 tập tin riêng biệt của chính nó, và nếu một quy ước đặt tên thông nhất được sử dụng, việc truy cập vào các class sẽ vô cùng đơn giản. - Giả sử bạn có một ứng dụng với 150 class, các class này sẽ được gọi 1 cách tự động thông qua 1 file controller đặt tại thư mục gốc của ứng dụng. Toàn bộ 150 class đều được đặt tên theo quy nào đó . - Do cấu trúc mã lệnh tuy liên kết chặt chẽ nhưng vẫn tách biệt và rời rạc thành từng phần nênsự thay đổi mã lệnh trong lập trình Hướng Đối Tượng thường dễ dàng hơn là trong lập trình Hướng Thủ Tục. - Nếu một mảng thông tin cụ thể nào đó nhận được một giá trị mới, một phần thủ tục của phần mềm có thể sẽ yêu cầu (trong trường hợp xấu nhất) thêm thuộc tính mới này vào trong từng hàm xử lý cái mảng này. - Nếu ứng dụng của bạn là một ứng dụng Hướng Đối Tượng, điều này sẽ dễ dàng thực hiện hơn như: thêm thuộc tính mới, sau đó thêm các phương thức xử lý các thuộc tính đó. Câu 2 : Những điểm mới của lập trình hướng đối tượng so với lập trình cấu trúc ( hoặc có thể gọi là Lập Trình Hướng Thủ Tục ) ? Lập trình hướng đối tượng (gọi tắt là OOP, từ chữ Anh ngữ object-oriented programming), hay còn gọi là lập trình định hướng đối tượng, là kĩ thuật lập trình hỗ trợ công nghệ đối tượng. OOP được xem là giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn. Ngoài ra, nhiều người còn cho rằng OOP dễ tiếp thu hơn cho những người mới học về lập trình hơn là các phương pháp trước đó. Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảm nhẹ các thao tác viết mã cho người lập trình, cho phép họ tạo ra các ứng dụng mà các yếu tố bên ngoài có thể tương tác với các chương trình đó giống như là tương tác với các đối tượng vật lý. Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ liệu mà chúng được nhìn nhận như là một đơn vị duy nhất. Mỗi đối tượng có một tên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó. Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữ liệu (bên trong của nó), và gửi ra hay trả lời đến các đối tượng khác hay đến môi trường. Tính đóng gói (encapsulation) : Tính chất này không cho phép người sử dụng các đối tượng thay đổi trạng thái nội tại của một đối tượng. Chỉ có các phương thức nội tại của đối tượng cho phép thay đổi trạng thái của nó. Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã. Đây là tính chất đảm bảo sự toàn vẹn của đối tượng. Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp (message). Việc gửi các thông điệp này có thể so sánh như việc gọi các hàm bên trong của một đối tượng. Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau. Người lập trình có thể định nghĩa một đặc tính (chẳng hạn thông qua tên của các phương thức) cho một loạt các đối tượng gần nhau nhưng khi thi hành thì dùng cùng một tên gọi mà sự thi hành của mỗi đối tượng sẽ tự động xảy ra tương ứng theo đặc tính của từng đối tượng mà không bị nhầm lẫn. Tính kế thừa (inheritance): Đặc tính này cho phép một đối tượng có thể có sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa. Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại. Tuy nhiên, không phải ngôn ngữ định hướng đối tượng nào cũng có tính chất này. Những mẫu hình khác như lập trình chức năng và lập trình thủ tục tập trung chủ yếu trên các hành động, còn lập trình lô gíc lại tập trung vào những khẳng định hợp lý để kích hoạt sự thực thi của mã chương trình. Câu 3 : Hàm Stack ( vào trước ra sau ) #include<iostream.h> #include<conio.h> typedef int item; class element { item data; element *next; public: friend class list; friend class iterator; }; class list { element *head; public: list(){ head=NULL;} void operator=(list &b){ head=b.head;} void insert(item &x) { element *p=new element; p->data=x; p->next=head; head=p; } list &operator+(list b) { element *pre,*p=head,*q=b.head; if(b.head==NULL) return *this; while(q->next!=NULL) q=q->next; q->next=head; head=b.head; return *this; } friend class iterator; }; class iterator//lop duyet danh sach { element *lnk; public: iterator(list &l){ lnk=l.head;} item *operator()() { if(lnk==NULL) return NULL; item *p=&lnk->data; lnk=lnk->next; return p; } void del() { if (lnk==NULL) return; element *p=lnk; lnk=p->next; delete []p; } void del1() { if (lnk==NULL) return; element *prev; while(lnk->next!=NULL) { prev=lnk; lnk=lnk->next; } prev->next=lnk->next; delete []lnk; } }; void main() { clrscr(); list l[10]; int n,i=1;item x; cout<<"so phan tu cua danh sach : ";cin>>n; cout<<"nhap cac phan tu :\n"; for(int j=0;j<n;j++) { cin>>x; l[i].insert(x); } iterator nexta(l[0]),nextb(l[1]); cout<<"xuat danh sach :\n"; item *p; while((p=nexta())!=NULL) cout<<*p<<"\t"; cout<<"\n"; while((p=nextb())!=NULL) cout<<*p<<"\t"; getch(); } . phương thức) cho một loạt các đối tượng gần nhau nhưng khi thi hành thì dùng cùng một tên gọi mà sự thi hành của mỗi đối tượng sẽ tự động xảy ra tương ứng. *pre,*p=head,*q=b.head; if(b.head==NULL) return *this; while(q->next!=NULL) q=q->next; q->next=head; head=b.head; return *this; } friend class iterator; }; class

Ngày đăng: 13/03/2014, 09:57

Hình ảnh liên quan

Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp (message). Việc gửi các thơng điệp này có thể so sánh như việc gọi các hàm bên trong của một đối tượng - Bài ôn Thi lập trình hướng đối tượng

nh.

đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp (message). Việc gửi các thơng điệp này có thể so sánh như việc gọi các hàm bên trong của một đối tượng Xem tại trang 1 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan