+ Nó thường được dạy theo ngữ cảnh của một hoặc một vài ngôn ngữ lậptrình+ Có sự mập mờ giữa các công cụ, các khái niệm và các cách khác nhau về quan điểm lập trình/phương pháp lập trình
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN
THÔNG KHOA CÔNG NGHỆ THÔNG TIN
Sinh viên thực hiện : Hoàng Tùng Dương
Nguyễn Hải Đăng
Hà Trung Tuyến Hoàng Huyền Diệp Nguyễn Đức Tuấn
Trang 2Thái Nguyên , ngày…tháng…năm 2022
BẢNG PHÂN CÔNG CÔNG VIỆC
Công việc thực hiện
+ Tìm hiểu Chương 2(Tínhđónggói,đadình,trừutượng,kếthừa),làmpowerpoint,thuyết trình+ Tìm hiểu Chương 2(Ưunhược điểm.Xu hướng,1 sốngôn ngữ lập OOP,private vàpublic),làm báo cáo
+ Xây dựng Demo,làm báo cáo+ Tìm hiểu Chương 2(Lịch sửhình thành,khái bản OOP,Class
và Object),làmbáo cáo+ Tìm hiểu Chương 1(Kháiniệm,vai trò của các cấp độ củaphương pháp luận)làm báo cáo
1
Trang 3MỤC LỤ
2
Trang 4BẢNG PHÂN CÔNG CÔNG VIỆC 1
MỤC LỤC 2
LỜI MỞ ĐẦU 4
CHƯƠNG 1 TỔNG QUAN VỀ PHƯƠNG PHÁP LUẬN LẬP TRÌNH 5
1.1 Đặt vấn đề 5
1.2 Phương pháp luận là gì? 7
1.3 Vai trò của phương pháp luận 8
1.4 Chức năng của phương pháp luận 8
1.5 Các cấp độ phương pháp luận 9
CHƯƠNG 2 : LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 10
2.1 Lịch sử hình thành của lập trình hướng đối tượng 10
2.2 Những khái niệm cơ bản của lập trình hướng đối tượng 11
2.3 Class và Object 12
2.4 Tính kế thừa (inheritance) 13
2.5 Tính đóng gói (encapsulation) 15
2.6 Tính đa hình(polimorphism) 16
2.7 Tính trừu tượng 17
Ưu điểm khi sử dụng tính trừu tượng để lập trình 18
2.8 Tính ứng dụng 18
2.9 Thành phần private và public của lớp 19
2.10 Một số ngôn ngữ lập trình hướng đối tượng 20
2.11 Uư điểm phương pháp luận lập trình hướng đối tượng 21
2.12 Nhược điểm phương pháp luận lập trình hướng đối tượng 22
2.13 Xu hướng phát triển 23
CHƯƠNG 3: DEMO 24
3.1 Tổng quan về phần mềm 24
3.1.1 Lý do chọn đề tài 24
3.1.2 Mục tiêu của đề tài 24
3.1.3 Hiêno tr愃⌀ng 24
3.2 Các tính chất lập trình hướng đối tượng 25
3.2.1 Tính kế thừa 25
3
Trang 53.2.2 Tính đóng gói 25
3.2.3 Tính đa hình 26
3.2.4 Tính trừu tượng 26
CHƯƠNG 4 : TỔNG K쨃 ĀT, K 쨃 ĀT LUÂoN 27
4.1 Tổng kết 27
4.2 Tài liêuo 28
4
Trang 6+ sử dụng kết hợp cả 2 style trên Do đó, nó được xem là một ngôn ngữ lai tạo Ngôn ngữ C++ là một ngôn ngữ lập trình cấp trung Bởi vì nó có các tính
chất của cả ngôn ngữ lập trình bậc thấp (Pascal, C…) và ngôn ngữ lập trìnhbậc cao (C#, Java, Python…) Ngôn ngữ lập trình C++ (C plus plus) có đuôi mở
rộng là cpp
Vai trò đặc biệt quan trọng của bộ đôi 2 ngôn ngữ lập trình C và C++ là phục
vụ cho học lập trình cơ bản Bởi vì đây là một ngôn ngữ lập trình bậc trung.Hầu hết các trường đào tạo công nghệ thông tin ở Việt Nam đều dùng 2ngôn ngữ này làm môn cơ sở ngành
Môn lập trình C giúp bạn có nền tảng với kỹ thuật lập trình, các kiến thức cơbản và tư duy lập trình Một lập trình C++ cung cấp kiến thức về lập trìnhhướng đối tượng Cả 2 ngôn ngữ này cũng được sử dụng để học các mônhọc về cấu trúc dữ liệu và giải thuật
Nếu bạn có kiến thức tốt về 2 ngôn ngữ này, thêm với kiến thức về cấu trúc
dữ liệu và giải thuật Việc học các kiến thức lập trình mới của bạn sẽ trở nênđơn giản hơn rất nhiều Kiến thức mới ở đây có thể là công nghệ mới, ngônngữ lập trình mới,…
5
Trang 8+ Nó thường được dạy theo ngữ cảnh của một (hoặc một vài) ngôn ngữ lậptrình
+ Có sự mập mờ giữa các công cụ, các khái niệm và các cách khác nhau
về quan điểm lập trình/phương pháp lập trình
=> Dạy lập trình theo cách này, cũng giống như dạy xây dựng các cây cầu(bridge) Một số người dạy cách xây dựng các cây cầu gỗ, một số người lạidạy cách xây dựng các cây cầu bằng sắt mà không nghĩ đến việc kết hợpgiữa gỗ và sắt Do đó, dẫn đến chương trình phải chịu một bản thiết kếnghèo nàn (bị ràng buộc bởi những hạn chế của kỹ thuật như công cụ, ngônngữ, )
Khoa học giúp ta hiểu sâu sắc vấn đề và sự hiểu biết này tạo cho ta khảnăng dự đoán và khái quát hóa Ví dụ: Trong khoa học thiết kế, cho phépngười thiết kế thiết kế mọi cây cầu (có thể tạo bằng bất kỳ chất liệu nào nhưsắt, gỗ, hoặc kết hợp cả hai.) và thiết kế chúng theo những khái niệm nhưsau:
+ Sức lực (force)
+ Năng lượng (energy)
+ Sức ép (Stress)
+ Sự căng (Strain)
+ và các luật (Laws) mà chúng tuân theo
Tương tự, trong khoa học lập trình, ta cũng cần thiết kế chương trình dựatrên các khái niệm chung về lập trình Có thể xem lập trình là hoạt động nằmgiữa 2 hoạt động là đặc tả hệ thống và chạy chương trình cài đặt bản đặc tả.Như vậy, lập trình gồm 2 bước:
+ Thiết kế kiến trúc chương trình và các trừu tượng
+ Mã hóa bản thiết kế, sử dụng ngôn ngữ lập trình cụ thể
7
Trang 9Trong đó:
Thiết kế kiến trúc chương trình và các trừu tượng
Là những hoạt động độc lập với ngôn ngữ lập trình, và cũng là côngviệc khó nhất và quan trọng nhất trong lập trình nhằm đưa ra bản kiến trúc
chương trình và các thiết kế trừu tượng Các thiết kế trừu tượng được định
nghĩa là các thiết bị/công cụ để giải quyết một vần đề thực tế Đây là chìakhóa chính của các trừu tượng Các trừu tượng có thể được phân loại theothứ bậc, phụ thuộc vào cách chúng được đặc tả Càng ở mức cao, sự trừutượng càng có mức khái quát cao hơn Sự trừu tượng cũng là một phần củacuộc sống hàng ngày mà ta thường lãng quên
Ví dụ: Một số trừu tượng như:
+ Những quyển sách
+ Các tua vít,
+ Cây bút chì - Công cụ viết
Trong đó: “Bút chì” được đặc tả chi tiết hơn so với “công cụ để viết”,
nhưng cả 2 đều là các trừu tượng
Để bản thiết kế chương trình mang tính độc lập, ta cần thiết kế chương trìnhdựa trên các khái niệm lập trình nói chung để xây dựng các trừu tượng Cóthể kết hợp nhiều phương pháp luận lập trình trong một chương trình Ta cóthể thấy dường như là sai lầm khi làm điều này, nhưng thực chất điều nàykhông sao cả trong mọi tình huống, khá tự nhiên rằng một chương trình tốt
là sử dụng nhiều phương pháp luận lập trình
Mã hóa bản đặc tả, sử dụng ngôn ngữ lập trình cụ thể
Sử dụng kỹ thuật mã hóa cụ thể (ngôn ngữ, công cụ, các chuẩn, ) đểchuyển bản đặc tả thiết kế chương trình thành chương trình cụ thể Điều nàygiống như việc, từ bản thiết kế cây cầu, chúng ta đi xây dựng cây cầu bằng
gỗ, bằng sắt, hoặc kết hợp gỗ và sắt, hoặc bằng chất liệu tùy ý
Tóm lại
8
Trang 10Hoạt động lập trình như định nghĩa ở trên gồm hai phần cơ bản:
+ Kỹ thuật: Gồm các công cụ, các kỹ thuật thực hành, và các chuẩn cho phép ta lập trình
+ Nền tảng khoa học của nó: Gồm các lý thuyết cho phép ta hiểu hoạtđộng lập trình Khoa học giải thích kỹ thuật một cách trực tiếp, và giúp ích cho
ta hiểu sâu sắc vấn để để từ đó có thể vận dụng, phân tích, tổng hợp và đưa racác cải tiến hoặc đề xuất các kỹ thuật mới
Khoa học và kỹ thuật phải kết hợp với nhau không thể tách rời để giải quyếttrọn vẹn một vấn đề nào đó Không có kỹ thuật, ta làm việc đơn thuần vớicác cơ chế Không có khoa học, ta phải làm việc một cách thủ công, thiếu sựhiểu biết sâu sắc
1.2 Phương pháp luận là gì?
Phương pháp luận là một cách tiếp cận để giải quyết vấn đề nào đó.Phương pháp luận lập trình là cách tiếp cận để viết ra các chương trình(theo quan điểm lý thuyết) Theo quan điểm kỹ thuật, phương pháp luận lập
trình còn được gọi là kỹ thuật lập trình
Nguồn gốc của phương pháp luận: Trong khoa học con người sử dụng rấtnhiều phương pháp như phương pháp thống kê, phương pháp mô tả,phương pháp điều tra bằng bảng hỏi, phương pháp phỏng vấn…
Quá trình lựa chọn phương pháp để sử dụng nó có thể đúng và đi đến thànhcông, nhưng chọn sai chắc chắn sẽ dẫn đến thất bại (ví dụ: trong cách mạnglựa chọn sai phương pháp đánh giặc) Đứng trước vấn đề này, xuất hiện nhucầu phải có nhận thức khoa học về phương pháp và thông qua đó phươngpháp luận ra đời
Hiện nay, có nhiều cách hiểu gần giống nhau về phương pháp luận
Có ba cách hiểu phổ biến nhất:
- Luận về một phương pháp
- Hệ thống các phương pháp
- Khoa học hoặc lý thuyết về phương pháp
Nếu xác định vị trí, thì phương pháp luận “là một bộ phận của logic học, nhằm nghiên cứu một cách hậu nghiệm về các phương
9
Trang 11pháp”[1] Phương pháp luận không đề xuất, tạo ra các phương pháp, nó chỉchọn lọc hoặc tổng hợp những phương pháp “Đứng trước những con đườngkhác nhau dẫn đến cùng một mục tiêu, phương pháp luận sẽ chỉ cho ta conđường nào là con đường ngắn nhất, tốt nhất”
Như vậy, phương pháp luận được hiểu là hệ thống các nguyên lý, quan điểm(trước hết là những nguyên lý, quan điểm liên quan đến thế giới quan) làm
cơ sở, có tác dụng chỉ đạo, xây dựng các phương pháp, xác định phạm vi,khả năng áp dụng các phương pháp và định hướng cho việc nghiên cứu tìmtòi cũng như việc lựa chọn, vận dụng phương pháp Nói cách khác thìphương pháp luận chính là lý luận về phương pháp, bao hàm hệ thống cácphương pháp, thế giới quan và nhân sinh quan của người sử dụng phươngpháp và các nguyên tắc để giải quyết các vấn đề đã đặt ra có hiệu quả caonhất.Cũng như phương pháp, có thể phân ra các cấp độ phương pháp luận.Phương pháp luận có nhiều cấp độ khác nhau: phương pháp luận ngành làphương pháp luận của các ngành khoa học cụ thể; phương pháp luận chung
là các quan điểm, nguyên tắc chung hơn cấp độ ngành, dùng để xác địnhphương pháp hay phương pháp luận của nhóm ngành có đối tượng nghiêncứu chung nào đó; phương pháp luận chung nhất (phương pháp luận triếthọc) khái quát các quan điểm, nguyên tắc chung nhất làm cơ sở cho việc xácđịnh các phương pháp luận ngành, chung và các phương pháp hoạt động cụthể của nhận thức và thực tiễn Vì phương pháp luận mang tính lý luận caonên nó có màu sắc triết học, tuy nhiên, không thể đồng nhất phương phápluận và phương pháp luận triết học Phương pháp luận của Triết học Mác -Lênin đáp ứng những đòi hỏi của nhận thức khoa học hiện đại cũng như hoạtđộng cải tạo và xây dựng thế giới mới
Qua phân tích các khái niệm, phương pháp chính là cách thức con người sửdụng để đạt được những mục đích đặt ra; phương pháp hệ là nhóm các cáchthức con người sử dụng để hoàn thành những nhiệm vụ, thông thường nóliên quan đến hoạt động nghiên cứu khoa
10
Trang 12học Phương pháp và phương pháp hệ gắn trực tiếp với quá trình hoạt độngthực tiễn Còn phương pháp luận là lý luận về phương pháp, nghĩa là nó gắnliền với quá trình tư duy, không trực tiếp đến hoạt động thực tiễn được đề ra.Điểm phân biệt giữa phương pháp luận và phương pháp luận triết học chính
là phân loại cấp độ
1.3 Vai trò của phương pháp luận
Vai trò của phương pháp luận triết học đối với nhận thức và thực tiễn thểhiện ở chỗ nó chỉ đạo sự tìm kiếm, xây dựng; lựa chọn và vận dụng cácphương pháp để thực hiện hoạt động nhận thức và thực tiễn; đóng vai tròđịnh hướng trong quá trình tìm tòi, lựa chọn và vận dụng phương pháp.Với tư cách là hệ thống tri thức lý luận chung nhất của con người về thế giới,
về vị trí, vai trò của con người trong thế giới đó Phương pháp luận giữ vaitrò định hướng cho quá trình củng cố và phát triển thế giới quan của mỗi cánhân, mỗi cộng đồng trong lịch sử Trang bị thế giới quan đúng đắn mới chỉ
là một mặt của xã hội Với tư cách là hệ thống tri thức chung nhất của conngười về thế giới và vai trò của con người trong thế giới đó
1.4 Chức năng của phương pháp luận
Phương pháp luận có chức năng định hướng con người, gợi mở cho hoạtđộng thể mà chủ thể phải tuân thủ và thực hiện nhằm đạt được kết quả nhấtđịnh
Phương pháp luận đóng vai trò định hướng trong quá trình tìm tòi, lựa chọn,vận dụng phương pháp, định hướng, gợi mở trong phương pháp luận là nóđưa ra những quan điểm, nguyên tắc chỉ đạo để chúng ta tìm tòi, xây dựng,lựa chọn và vận dụng phương pháp
1.5 Các cấp độ phương pháp luận
Các cấp độ của phương pháp luận có nhiều loại đó là:
– Phương pháp luận ngành: là phương pháp luận sử dụng cho từng ngành khoa học cụ thể;
11
Trang 13– Phương pháp luận chung: là phương pháp luận được sử dụng chung chomột nhóm ngành có đặc điểm chung và mối liên hệ chung có cơ sở để ápdụng;
– Phương pháp luận chung nhất: là phương pháp luận khái quát các quanđiểm, nguyên tắc chung nhất Phương pháp luận này được sử dụng cho cácphương pháp luận chung, phương pháp luận cho tất cả các ngành khoa học
và được các phương pháp cụ thể sử dụng
12
Trang 14CHƯƠNG 2 : LẬP TRÌNH HƯỚNG ĐỐI
TƯỢNG 2.1 Lịch sử hình thành của lập trình hướng đối tượng
Lập trình hướng đối tượng (OOP) là một hướng tiếp cận để xây dựngphần mềm, trong đó kiến trúc của phần mềm dựa trên sự tương tác giữa cácđối tượng với nhau để hoàn thành một công việc Sự tương tác này có dạngcác thông điệp được gửi qua lại giữa các đối tượng Để trả lời một thôngđiệp, một đối tượng có thể thực hiện một hành động hoặc một phương thức.Nếu bạn xem cách bạn hoàn thành các công việc trong thế giới quanhbạn như thế nào, bạn có thể thấy rằng bạn đang tương tác trong một thế giớihướng đối tượng Ví dụ, nếu bạn muốn đến một cửa hàng, bạn sẽ tương tácvới đối tượng ô tô Một đối tượng ô tô bao gồm nhiều đối tượng khác nhautương tác với nhau để hoàn thành công việc là đưa bạn đến cửa hàng Bạnđưa chìa khóa vào đối tượng ổ khóa để khởi động máy, một thông điệp sẽđược gửi (thông qua tín hiệu điện tử) tới đối tượng khởi động, nó sẽ tácđộng tới đối tượng cỗ máy để khởi động chiếc xe Sau đó bạn tiếp tục tácđộng vào các đối tượng hộp số, chân ga, chân thắng, vô lăng, … để điềukhiển chiếc xe đưa bạn tới cửa hàng Và điều ta nhận thấy ở đây là khi tatương tác (gửi một thông điệp) tới một đối tượng thì đối tượng đó sẽ gửi lạimột thông điệp phản hồi Ví dụ như khi bạn tra chìa khóa vào ổ và khởi động,máy của xe sẽ gửi lại cho bạn một thông điệp là máy sẽ khởi động hoặckhông Khi bạn gài số và nhấn ga thì xe sẽ gửi lại cho bạn một thông điệp là
nó di chuyển Khi bạn đánh vô lăng sang trái thì xe sẽ gửi cho bạn một thôngđiệp là xe sẽ quẹo trái,…
Tương tự, khi người dùng phần mềm muốn in một trang tài liệu, họ sẽbắt đầu bằng hành động nhấn vào nút in Phần mềm sẽ tương tác với đốitượng máy in và gửi về cho bạn một thông điệp Nếu máy in hết giấy hoặckhông tìm thấy máy in thì phần mềm sẽ gửi cho bạn một thông điệp là inkhông thành công,
13
Trang 15ngược lại trang tài liệu được in ra từ máy in chính là thông điệp in thànhcông.
Khái niệm hướng đối tượng được bắt đầu nổi lên giữa những năm
1960 với một ngôn ngữ lập trình có tên là Simula và tiếp tục phát triển trongthập niên 70 với ngôn ngữ Smalltalk Mặc dù số lượng lập trình viên đi theongôn ngữ hướng đối tượng không nhiều, nhưng phương pháp lập trìnhhướng đối tượng vẫn tiếp tục phát triển Đến giữa thập niên 80 có một sự hồisinh mạnh mẽ của phương pháp lập trình hướng đối tượng Đặc biệt, cácngôn ngữ lập trình hướng đối tượng như C++ và Eifle trở nên phổ biến vớicác lập trình viên máy chủ Lập trình hướng đối tượng tiếp tục phát triển vàphổ biến trong thập niên 90, đáng chú ý nhất là sự ra đời của ngôn ngữ Java.Đến năm 2002, kết hợp với việc phát hành NET Framework, Microsoft đãgiới thiệu một ngôn ngữ lập trình hướng đối tượng mới, C# (viết đầy đủ là C-Sharp) và sửa chữa ngôn ngữ Visual Basic để nó trở thành một ngôn ngữ lậptrình hướng đối tượng
2.2 Những khái niệm cơ bản của lập trình hướng đối tượng
*Lập trình hướng đối tượng
Lập trình hướng đối tượng được xây dựng trên nền tảng của khái niệm lập trình cấu trúc và sự trừu tượng hóa dữ liệu
Là phương pháp lập trình:
o Mô tả trực tiếp các đối tượng trong thế giới.Lấy đối tượng là nền tảng trong thuật toán
o Thiết kế xoay quanh dữ liệu hệ thống
o Chương trình được chia thành các lớp đối tượng
o Dữ liệu được đóng gói che dấu và bảo vệ
o Đối tượng làm việc với nhau qua thông báo
o Chương trình thiết kế theo cách từ dưới lên (bottum-up)
và từ trên xuống (top-down)
*Đối tượng
14
Trang 16Đối tượng = Dữ Liệu + Phương Thức
Là khái niệm trừu tượng phản ánh các thực thể trong thế giới thực
o Có thể là 1 thực thể vật lí
o Có thể là 1 khái niệm trừu tượng
Một đối tượng là sự đóng gói 2 thành phần :
o Trạng thái(State) dữ liệu hay thuộc tính(attribute) đó là các đặc điểm của đối tượng
o Cách ứng xử hay hànhhành,thao tác phương thứcthức:đó là 1 hành dộng mà đối tượng có thể thực hiện
Có 2 loại đối tượng:đối tượng trừu tượng và đối tượng thực
Được định nghĩa là sự thể hiện của 1
Chính là các thực thể trong hệ hướng đối tượng
Ví Dụ:
Ví Dụ 1:
o Một con người là một đối tượng
Họ tên,chiều cao,cân nặng là thuộc tính của tất cả conngười
Hành vi của con người là ngồi,đứng,dậy
Trang 17• Đối tượng là một thực thể cụ thể, có thực, tồn tại trong hệ thống.Trong khi đó, lớplà một khái niệm trừu tượng, chỉ tồn tại ở dạng khái niệm để
mô tả các đặc tính chung của một số đối tượng
• Tất cả các đối tượng thuộc về cùng một lớp có cùng các thuộc tính và các phương thức
• Một lớp là một nguyên mẫu của một đối tượng Nó
xác định các hành động khả thi và các thuộc tính cần thiết cho một nhóm các đối tượng cụ thể
Nói chung, lớp là khái niệm tồn tại khi phát triển hệ thống, mangtính khái niệm, trừu tượng Trong khi đó, đối tượng là một thực thể cụthể tồn tại khi hệ thống đang hoạt động
2.4 Tính kế thừa (inheritance)
Tính kế thừa cho phép tạo ra 1 class con từ 1 class có sẵn và mở rộngclass đó Các class con có thể kế thừa lại các thuộc tính (properties) vàphương thức (methods) của class cha, có thể không cần định nghĩa lạicác phương thức hoặc tái định nghĩa (override) hoặc thêm các phươngthức sử dụng riêng ở lớp con Tính chất này giúp tái sử dụng, tận dụng
Trang 18class lopcon : phamvidulieu lopcha{
Ưu điểm của kế thừa :
Cho phép xây dựng một lớp mới từ một lớp đã có
17