intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Đề cương ôn tập lập trình hướng đối tượng

Chia sẻ: Phan Ngoc Huy | Ngày: | Loại File: DOC | Số trang:13

544
lượt xem
74
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo - Đề cương ôn tập lập trình hướng đối tượng

Chủ đề:
Lưu

Nội dung Text: Đề cương ôn tập lập trình hướng đối tượng

  1. ĐỀ CƯƠNG ÔN TẬP MÔN LTHĐT I/ Phần lý thuyết Câu 1) Cho biết kế thừa là gì? Khi nào nên dùng kế th ừa, khi nào không nh ất thi ết dùng k ế th ừa, cho ví dụ thể hiện 2 trường hợp trên. Câu 2) Cho biết lớp ảo là gì? Khi nào nên dùng lớp ảo, khi nào không nhất thiết dùng l ớp ảo, cho ví dụ thể hiện 2 trường hợp trên. Câu 3) Cho biết tính đóng gói trong hướng đối t ượng là gì? Cho ví dụ. Câu 4) Phân biệt Class và object, cho ví dụ thực tế. Câu 5) Bộ khởi tạo (phương thức thiết lập) là gì, vai trò của bộ khởi tạo, cho ví d ụ Câu 6) Bộ phá huỷ (phương thức huỷ bỏ) là gì, vai trò của bộ phá hu ỷ, cho ví dụ Câu 7) Tính đa hình là gì, cho một ví dụ cụ thể viết bằng mã. Câu 8) Phân biệt giữa overload và override, cho ví dụ mô tả. Câu 9) Hàm bạn được sử dụng trong trường hợp nào? Giữa hàm bạn và l ớp bạn khác nhau ở đi ểm nào? Cho ví dụ minh hoạ CÂU 10) Trong ngôn ngữ C++, liệt kê tất cả các trường hợp mà hàm thiết lập sao chép (copy constructor) được tự động thực hiện? Khi nào bắt buộc phải cài đặt tường minh hàm thiết lập sao chép? CÂU 11) Hãy nêu sự khác nhau giữa Overload và Override. CÂU 12) Cho biết hàm khởi tạo (constructor) là gì? tác dụng c ủa nó? Thế nào là contructor chuẩn? có mấy loại constructor chuẩn? Các đối tượng của lớp thừa kế đơn được thiết lập và hủy bỏ theo thứ tự như thế nào ?
  2. CÂU 13) Hàm ảo là gì? thừa kế ảo là gì? Khi nào thì nên sử dụng hàm ảo? Thế nào là hàm ảo thuần túy? CÂU 14) Thế nào là tính đóng gói? Lợi ích của tính đóng gói trong lập trình hướng đối tượng? CÂU 15) Thế nào là đa năng hóa toán tử? Trong lập trình hướng đối tượng sử dụng C++, những toán tử nào không thể đa năng hóa? Viết cú pháp khai báo đa năng hóa toán tử. II/ Phần bài tập Câu 1) Một cửa hàng cần quản lý hoạt động bán hàng theo các quy định sau: + Một mặt hàng có thể thuộc một trong các loại hàng sau - Hàng thực phầm: Mã số, Tên, đơn vị tính, số lượng, đơn giá, ngày sản xuất, ngày hết hạn - Hàng gia dụng: Mã số, tên, đơn vị tính, số lượng, đơn giá, bảo hành - Hàng quần áo giày dép: Mã số, tên, đơn vị tính, số lượng, đơn giá, kích cỡ, màu sắc + Một hóa đơn chứa các thông tin: Mã hóa đơn, Ngày lập, tên khách hàng, địa chỉ, thuế VAT và danh mục các mặt hàng được mua ( tối đa 10 mặt hàng) Yêu cầu: + Thiết kế các lớp đối tượng cho bài toán trên, với mỗi đối tượng hãy chỉ ra: - các thuộc tính - các phương thức ( chỉ nêu tên phương thức và mục đích, không cài đặt) + Vẽ mô hình các lớp đối tượng và quan hệ giữa chúng (nếu có) + Dùng ngôn ngữ C++, cài đặt các lớp, lưu ý sinh viên chỉ cài đặt các thuộc tính và các prototype cho các phương thức, không cài đặt phương thức + Hãy cài đặt phương thức tính trị giá cho hóa đơn Câu 2) Công ty XYZ quản lý việc mua hàng của 3 loại khách hàng: - Loại A: Khách hàng bình thường (gồm x khách hàng): Số tiền khách hàng trả = Số lượng hàng * đơn giá hàng + Thuế VAT (10%) - Loại B: Khách hàng thân thiết (gồm y khách hàng): Phần trăm khuyến mãi = MAX( Số năm thân thiết * 5%, 50%) Số tiền khách hàng trả = (Số lượng hàng * đơn giá hàng ) * (100% - Phần trăm khuyến mãi) + Thuế VAT (10%) - Loại C: Khách hàng đặc biệt (gồm z khách hàng): Số tiền khách hàng trả = (Số lượng hàng * đơn giá hàng) *50% + Thuế VAT (10%)
  3. Yêu cầu: + Thiết kế các lớp đối tượng cho bài toán trên, với mỗi đối tượng hãy chỉ ra: - các thuộc tính - các phương thức ( chỉ nêu tên phương thức và mục đích, không cài đặt) + Vẽ mô hình các lớp đối tượng và quan hệ giữa chúng (nếu có) + Dùng ngôn ngữ C++, cài đặt các lớp, lưu ý sinh viên chỉ cài đặt các thuộc tính và các prototype cho các phương thức, không cài đặt phương thức + Hãy cài đặt phương thức tính doanh thu của công ty Câu 3) Hàng đợi là một danh sách hoạt động theo nguyên t ắc “vào tr ước ra tr ước” (FIFO). Có th ể cài đặt hàng đợi như một danh sách liên kết đơn với thao tác thêm phần t ử vào hàng đ ợi, l ấy phần tử từ hàng đợi lần lượt được xử lý như thêm phần tử vào cuối danh sách, l ấy ph ần t ử ở đầu danh sách. Ngăn xếp là một danh sách hoạt động theo nguyên t ắc “vào sau ra tr ước” (LIFO). Có th ể cài đặt ngăn xếp như một danh sách liên kết đơn với thao tác thêm ph ần t ử vào đ ầu danh sách, lấy phần tử ở đầu danh sách. Yêu cầu: + Thiết kế các lớp đối tượng cho bài toán trên, với mỗi đối tượng hãy chỉ ra: - các thuộc tính - các phương thức ( chỉ nêu tên phương thức và mục đích, không cài đặt) + Vẽ mô hình các lớp đối tượng và quan hệ giữa chúng (nếu có) + Dùng ngôn ngữ C++, cài đặt các lớp, lưu ý sinh viên chỉ cài đặt các thuộc tính và các prototype cho các phương thức, không cài đặt phương thức + Hãy cài đặt phương thức sao chép giá trị từ một hàng đợi vào một ngăn xếp Câu 4) Một công ty kinh doanh địa ốc cần xây dựng chương trình qu ản lý thông tin v ề các khu đ ất và căn hộ do công ty cung ứng với các thông tin cần quản lý nh ư sau: - Khu đất : Địa điểm, giá bán, diện tích. - Căn hộ (có 2 loại) : * Nhà sân vườn : Địa điểm, giá bán, diện tích xây dựng, diện tích sân vườn. * Nhà phố : Địa điểm, giá bán, diện tích xây dựng, số tầng. Yêu cầu: + Thiết kế các lớp đối tượng cho bài toán trên, với mỗi đối tượng hãy chỉ ra: - các thuộc tính - các phương thức ( chỉ nêu tên phương thức và mục đích, không cài đặt) + Vẽ mô hình các lớp đối tượng và quan hệ giữa chúng (nếu có) + Dùng ngôn ngữ C++, cài đặt các lớp, lưu ý sinh viên chỉ cài đặt các thuộc tính và các prototype cho các phương thức, không cài đặt phương thức + Hãy cài đặt phương thức hiển thị thông tin theo từng phân loại
  4. Ghi chú : * Chỉ dùng một danh sách để quản lý các đối tượng. * Số lượng đối tượng cần quản lý không quá 50. Câu 5) Cho N hình, gồm các loại hình: tam giác, chữ nhật, hình vuông, hình tròn Các hình được mô tả với các thông số như sau: - Hình tam giác: ký hiệu là ‘G’ kèm theo tọa độ 3 đỉnh. - Hình chữ nhật: ký hiệu là ‘C’ kèm theo tọa độ góc trái trên và chiều dài (theo trục Ox) và chiều rộng (theo trục Oy). - Hình vuông: ký hiệu là ‘V’ kèm theo tọa độ góc trái trên và chiều dài cạnh. - Hình tròn: ký hiệu là ‘T’ kèm theo tọa độ tâm và bán kính. Mỗi tọa độ được xác định bởi hai số nguyên. Yêu cầu: + Thiết kế các lớp đối tượng cho bài toán trên, với mỗi đối tượng hãy chỉ ra: - các thuộc tính - các phương thức ( chỉ nêu tên phương thức và mục đích, không cài đặt) + Vẽ mô hình các lớp đối tượng và quan hệ giữa chúng (nếu có) + Dùng ngôn ngữ C++, cài đặt các lớp, lưu ý sinh viên chỉ cài đặt các thuộc tính và các prototype cho các phương thức, không cài đặt phương thức + Hãy cài đặt phương thức tìm hình chữ nhật nhỏ nhất bao quanh N hình đã cho xác định bởi tọa độ góc trái trên và chiều dài, chiều rộng của hình chữ nhật đó. Câu 6) Khách sạn SOFITEL có 3 loại phòng với doanh thu phòng của tháng được tính như sau: - Loại Deluxe: doanh thu phòng = (Số đêm * 750000 + Phí dịch vụ) * (100% + Phí phục vụ) - Loại Premium: doanh thu phòng = (Số đêm * 500000 + Phí dịch vụ) * 105% - Loại Business: doanh thu phòng = Số đêm * 300000 Yêu cầu: + Thiết kế các lớp đối tượng cho bài toán trên, với mỗi đối tượng hãy chỉ ra: - các thuộc tính - các phương thức ( chỉ nêu tên phương thức và mục đích, không cài đặt) + Vẽ mô hình các lớp đối tượng và quan hệ giữa chúng (nếu có) + Dùng ngôn ngữ C++, cài đặt các lớp, lưu ý sinh viên chỉ cài đặt các thuộc tính và các prototype cho các phương thức, không cài đặt phương thức + Hãy cài đặt phương thức để liệt kê phòng có doanh thu vượt trội. Biết phòng có doanh thu vượt trội thỏa tính chất: Doanh thu tháng >= Doanh thu tháng trước * 125%
  5. Câu 7) Xây dựng lớp TapHopSoPhuc đặc tả khái niệm tập hợp các số phức (số lượng phần t ử không giới hạn trước) với các phương thức: Thiết lập, thiết lập sao chép, hủy. • Thêm phần tử vào tập hợp. • Loại phần tử khỏi tập hợp. • Kiểm tra phần tử thuộc tập hợp. • Kiểm tra là tập con của một tập hợp. • Và các phép toán: Phép gán. • Phép toán giao, hội , hiệu hai tập hợp (sử dụng các ký hi ệu phép toán &, |, -). • Phép toán xuất/nhập. • Ghi chú: Xem như đã có lớp SoPhuc đặc tả khái niệm số phức với đầy đủ các phương th ức • cùng các phép toán: so sánh bằng (==), xuất/nhập,…… Sinh viên không cần cài đặt lớp SoPhuc. • Câu 8) Cho lớp Person dùng quản lý thông tin của m ột ng ười. D ữ liệu thành viên c ủa Person g ồm có: id(5 ký tự), name (tối đa 50 ký tự), yob(năm sinh), yod(năm m ất). L ớp Person có m ột s ố phương thức. • Input(), Output(): Nhập, xuất các dữ liệu của Person • Get Age(int year): trả về tuổi của người đó dựa vào năm hi ện hành (year) n ếu ng ười đó còn sống, hay là tuổi lúc người đó mất nếu yod khác 0 Yêu cầu: Khai báo lớp Person và cài đặt các phương thức trong l ớp đó Câu 9) Một địa phương cần quản lý nhân khẩu nên đã thiết kế l ớp PersonList dùng đ ể qu ản lý n (0
  6. b)Viết chương trình đáp ứng yêu cầu của công ty trên. Chương trình phải có các chức năng: + Nhập thông tin các khu đất, căn hộ. + Xuất thông tin các khu đất, căn hộ. +Tính giá bán của các khu đất và căn hộ biết rằng: đối với khu đất: giá bán=diện tích x đơn giá 1 km2 đối với nhà sân vườn, giá bán=diện tích xây dựng x đơn giá 1 km2+ diện tích sân vườn x đơn giá 1 km2 x 50% Đối với nhà phố: giá bán= diện tích xây dựng x đơn giá 1 km2 x số tầng CÂU 11) Công ty XYZ quản lý việc mua hàng của 3 loại khách hàng: -Loại A: khách hàng bình thường: họ tên, số lượng hàng, đơn giá hàng. Số tiền khách hàng trả=số lượng hàng x đơn giá hàng + thuế VAT 10% -Loại B: khách hàng thân thiết: họ tên, số lượng hàng, đơn giá , số năm thân thi ết, địa chỉ, điện thoại Phần trăm khuyến mãi=số năm thân thiết x 5% số tiền khách hàng trả=(số lượng hàng x đơn giá hàng) x (100%-phần trăm khuyến mãi) + thuế VAT 10% -Loại C: khách hàng đặc biệt: họ tên, số lượng hàng, đơn giá hàng, địa chỉ, điện thoại số tiền khách hàng trả=(số lượng hàng x đơn giá hàng) x 50% + thuế VAT 10% a) Hãy thiết kế mô hình theo hướng đối tượng sao cho có thể quản lý vi ệc mua hàng của công ty XYZ b)Viết chương trình thực hiện các yêu cầu sau: +Nhập các khách hàng +In thông tin các khách hàng +Tính tổng tiền mỗi khách hàng phải trả CÂU 12) Một trường đại học muốn quản lý tiền giảng cho các giáo viên và nhân viên như sau: Giảng viên cơ hữu: số CMND, họ tên, trình độ, địa chỉ, điện thoại, số ti ết gi ảng, số ti ết nghĩa vụ, tiền chuẩn 1 tiết. Nhân viên : số CMND, họ tên, trình độ, địa chỉ, điện thoại, số ti ết gi ảng, ti ền chuẩn 1 tiết. Giảng viên thỉnh giảng: số CMND, họ tên, trình độ, địa chỉ, điện thoại, số tiết giảng, tiền chuẩn 1 tiết, hệ số ở xa. a) Thiết kế các lớp để quản lý theo yêu cầu của trường đại học trên. b)Viết chương trình: +Nhập thông tin các giảng viên, nhân viên +Xuất thông tin các giảng viên, nhân viên + Tính tiền giảng các giảng viên và nhân viên như sau: Đối với giảng viên cơ hữu: tiền giảng = (số tiết giảng – số tiết nghĩa v ụ) x ti ền chuẩn 1 tiết Đối với nhân viên: tiền giảng = số tiết giảng x số tiền chuẩn 1 tiết Đối với giảng viên thỉnh giảng = số tiết giảng x số tiền chuẩn 1 tiết x (1+hệ số ở xa)
  7. CÂU 13) Cài đặt lớp Time biểu diễn khái niệm thời điểm có thành phần giờ, phút, giây và các phép toán sau: -Phép toán +(cộng một Time với một số nguyên giây) -Phép toán - (trừ 2 Time với nhau) -Phép toán >>, , < (so sánh 2 thời gian) -Hàm để kiểm tra một Time có hợp lệ hay không. Viết hàm main nhập vào thời điểm bắt đầu và thời điểm đến đích c ủa một vận đ ộng viện. Cho biết thời gian chạy của vận động viên đó. Nhập vào thời gian chạy k ỷ l ục hiện tại. So sánh thời gian chạy của vận động viên đó và thời gian chạy k ỷ l ục hi ện t ại để biết vận động viên này có phá kỷ lục hay không. CÂU 14) Cài đặt lớp TamGiac biểu diễn khái niệm hình tam giác gồm 3 số thực tượng trưng cho 3 cạnh của nó và các hành vi, phép tính sau: -Kiểm tra 1 tam giác đã cho có hợp lệ hay không (tam giác hợp l ệ nếu tổng 2 c ạnh b ất kỳ luôn lớn hơn cạnh thứ 3). -Phép toán >>, , < để so sánh diện tích 2 tam giác -Kiểm tra xem 1 tam giác là tam giác đều, tam giác cân, tam giác vuông tam giác vuông cân hay tam giác thường. Hãy viết hàm main theo yêu cầu sau: Nhập vào 2 tam giác. Kiểm tra xem chúng có hợp l ệ không. N ếu h ợp l ệ, so sánh xem diện tích tam giác nào lớn hơn. Kiểm tra xem tam giác có di ện tích l ớn hơn đó là tam giác gì? CÂU 15) Cài đặt lớp hình tròn gồm tọa độ tâm trong mặt phẳng (hoành độ, tung độ) và bán kính với các hành vi như sau: -Khởi tạo (có tham số và không có tham số) -Phép toán >>, , < để so sánh diện tích của 2 đối tượng hình tròn -Phép toán – để tính hiệu của 2 hình tròn, kết quả trả về là 1 hình tròn với tọa độ tâm là tọa độ trung điểm của tọa độ tâm 2 hình tròn và bán kính là hiệu bán kính c ủa 2 hình tròn đó. Viết hàm main theo yêu cầu sau: Nhập vào 2 đối tượng hình tròn H1, H2. Tính và in ra thông tin c ủa đ ối t ượng hình tròn H3 với H3 là hiệu của H1 và H2. Mẫu giải bài tập phân tích CÂU 10) Một công ty kinh doanh địa ốc cần xây dựng chương trình quản lý thông tin về các khu đất và căn hộ do công ty cung ứng với các thông tin cần quản lý như sau:
  8. - Khu đất : Địa điểm, đơn giá 1 km2 , diện tích. - Căn hộ (có 2 loại) : * Nhà sân vườn : Địa điểm, đơn giá 1 km2, diện tích xây dựng, diện tích sân vườn. * Nhà phố : Địa điểm, đơn giá 1 km2, diện tích xây dựng, số tầng. a) Hãy thiết kế mô hình theo hướng hướng đối tượng để đáp ứng yêu cầu quản lý c ủa công ty này. b)Viết chương trình đáp ứng yêu cầu của công ty trên. Chương trình phải có các chức năng: + Nhập thông tin các khu đất, căn hộ. + Xuất thông tin các khu đất, căn hộ. +Tính giá bán của các khu đất và căn hộ biết rằng: đối với khu đất: giá bán=diện tích x đơn giá 1 km2 đối với nhà sân vườn, giá bán=diện tích xây dựng x đơn giá 1 km2+ diện tích sân vườn x đơn giá 1 km2 x 50% Đối với nhà phố: giá bán= diện tích xây dựng x đơn giá 1 km2 x số tầng Giải Câu 10: Nội dung Điểm YC Thiết kế các lớp đối tượng cho bài toán: 1 • Nêu thiếu đối tượng trừ 0.5 điểm • Thiếu một trong các phương thức trừ 0.25 điểm (nêu tên phương thức và mục đích, không cài đặt) o Nhập dữ liệu o Xuất dữ liệu o Tính giá bán • Không nêu được phương thức ảo trừ 0.25 điểm Các lớp đối tượng : • Khu đất: o Tên lớp : khudat o Thuộc tính : Địa điểm (chuỗi), đơn giá (số thực), diện tích (số thực) o Phương thức :  Thiết lập : khudat() ;  Huỷ bỏ: ~khudat() ;  Nhập dữ liệu: virtual void nhap() ;// nhập thông tin khu đất  Xuất dữ liệu: virtual void xuat() ; //in thông tin khu đất  Kiểm tra dữ liệu : int kiemtradulieu() ;//kiểm tra dữ liệu (đơn giá và diện tích >0)  Tính giá bán : virtual double tinhgiaban() ; • Căn hộ: o Tên lớp : canho o Thừa kế : từ lớp khudat o Thuộc tính : diện tích xây dựng (số thực) o Phương thức :  Thiết lập : canho() ;
  9.  Huỷ bỏ: ~canho() ;  Nhập dữ liệu: virtual void nhap() ;// nhập thông tin căn hộ  Xuất dữ liệu: virtual void xuat() ; //in thông tin căn hộ  Tính giá bán : virtual double tinhgiaban()=0 ; • Nhà phố: o Tên lớp : nhapho o Thừa kế : từ lớp canho o Thuộc tính : số tầng (số nguyên) o Phương thức :  Thiết lập : nhapho() ;  Huỷ bỏ: ~nhapho() ;  Nhập dữ liệu: void nhap() ;// nhập thông tin nhà phố  Xuất dữ liệu: void xuat() ; //in thông tin nhà phố  Kiểm tra dữ liệu : int kiemtradulieu() ;//kiểm tra dữ liệu (số tầng >0)  Tính giá bán : double tinhgiaban() ; • Nhà sân vườn: o Tên lớp : nhasanvuon o Thừa kế : từ lớp canho o Thuộc tính : diện tích sân vườn (số thực) o Phương thức :  Thiết lập : nhasanvuon() ;  Huỷ bỏ: ~nhasanvuon() ;  Nhập dữ liệu: void nhap() ;// nhập thông tin nhà sân vườn  Xuất dữ liệu: void xuat() ; //in thông tin nhà sân vườn  Kiểm tra dữ liệu : int kiemtradulieu() ;//kiểm tra dữ liệu (diện tích sân vườn >0)  Tính giá bán : double tinhgiaban() ; Vẽ mô hình các lớp đối tượng và quan hệ giữa chúng (nếu có) 2 • Vẽ thiếu một đối tượng trừ 0.25 điểm • Không vẽ được mô hình thừa kế trừ 0.25 điểm
  10. • Mô hình quan hệ giữa các lớp đối tượng : Nhapho Nhansanvuon • Sotang • dientichsanvuon • Nhap() • Nhap() • Xuat() • Xuat() • Tinhgiaban() • Tinhgiaban() • Mối quan hệ: • Lớp canho thừa kế từ lớp khudat • Lớp nhapho và nhasanvuon thừa kế từ lớp canho Hiện thực các lớp bằng ngôn ngữ C++ với các phương thức và thủ tục cần thiết 3 để thể hiện các yêu cầu: (thiếu một lớp trừ 0.5 điểm, thiếu một phương thức trừ 0.25 điểm, sai quyền truy xuất trừ 0.25 điểm)
  11. • Hiện thực các lớp bằng C++ o Lớp khu đất:  Quyền truy xuất: protected cho các thuộc tính, public cho các phương thức  Thuộc tính : char*diadiem ; double dongia,dientich ;  Phương thức: • nhập : virtual void khudat ::nhap() ; • xuất : virtual void khudat ::xuat() ; • tính giá bán : virtual double tinhgiaban() ; o Lớp căn hộ với các phương thức :  Quyền truy xuất: protected cho các thuộc tính, public cho các phương thức  Thuộc tính : char*diadiem ; double dongia,dientich ;  Phương thức: • nhập : virtual void canho ::nhap() ; • xuất : virtual void canho ::xuat() ; • tính giá bán : virtual double canho ::tinhgiaban() ; o Lớp nhà phố với các phương thức :  Quyền truy xuất: protected cho các thuộc tính, public cho các phương thức  Thuộc tính : char*diadiem ; double dongia,dientich ;  Phương thức: • nhập : void nhapho ::nhap() ; • xuất : void nhapho ::xuat() ; • tính giá bán : double tinhgiaban() ; o Lớp khu đất với các phương thức :  Quyền truy xuất: protected cho các thuộc tính, public cho các phương thức  Thuộc tính : char*diadiem ; double dongia,dientich ;  Phương thức: • nhập : void nhasanvuon::nhap() ; • xuất : void nhasanvuon::xuat() ; • tính giá bán : double nhasanvuon::tinhgiaban() ;
  12. • Viết các thủ tục dùng chung thể hiện các yêu cầu: a) Nhập thông tin các khu đất, căn hộ. void nhapthongtin(khudat*[], int &sodoituong){ int loaidoituong=0; coutsodoituong; for(int i=0;i
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2