SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Lập trình hướng đối tượng
Object-oriented Programming


            Giảng viên: Nguyễn Thị Minh Huyền
            nguyenthiminhhuyen@hus.edu.vn
                      Đỗ Thanh Hà
                 dothanhha@hus.edu.vn
                                 OOP -
2009-2010            http://mim.hus.edu.vn/elearning   1
Môn học OOP
   2 tín chỉ: 30 tiết
        Nghe giảng lý thuyết trên lớp: 15t
        Thực hành tại phòng máy: 12t x 2
        Tự học: 3t
   Đề cương môn học




    2009-2010         OOP - http://mim.hus.edu.vn/elearning   2
Tổ chức học tập
   Giờ lí thuyết + thực hành: Phòng máy B (502-T5)
   Lịch học: Chiều thứ Hai hàng tuần, một số buổi sáng
    thứ Tư (xem lịch cụ thể kèm theo)
   Ghép nhóm 2-3 người: lên danh sách (cuối giờ)
   Bài tập thực hành:
        Chuẩn bị chương trình ở nhà
        Phân tích, chữa bài tập, chạy chương trình tại phòng máy
   Kiểm tra kiến thức:
        Kiểm tra thường xuyên (bài tập về nhà theo nhóm 2 người)
        Kiểm tra giữa kì
        Bài tập lớn (nhóm 4-5 người) + trả lời câu hỏi trên giấy


    2009-2010              OOP - http://mim.hus.edu.vn/elearning    3
Nhập môn
   Giới thiệu
   Các khái niệm cơ bản của lập trình
    hướng đối tượng
   Giới thiệu ngôn ngữ lập trình Java




2009-2010      OOP - http://mim.hus.edu.vn/elearning   4
Giới thiệu (1)
   Công nghệ phần mềm (software engineering):
           Đặc tả yêu cầu (requirements): làm gì?
           Phân tích (analysis): làm thế nào?
           Thiết kế (design): tổ chức ra sao?
           Lập trình (coding): viết mã chương trình
           Dò lỗi (debugging): sửa lỗi
           Kiểm tra (testing): đảm bảo chương trình chạy đúng
           Phân phối (deployment): đưa vào sử dụng
           Bảo trì (maintenance): tiếp tục hoàn thiện, phát triển, giữ
            phần mềm hoạt động



2009-2010                   OOP - http://mim.hus.edu.vn/elearning         5
Giới thiệu (2)
   Phân loại ngôn ngữ lập trình:
        Ngôn ngữ máy, hợp ngữ
        Ngôn ngữ lập trình bậc cao
               Lập   trình   thủ tục: Pascal, C, v.v.
               Lập   trình   hàm: Lisp, CML, v.v.
               Lập   trình   mô tả (lôgic): Prolog, v.v.
               Lập   trình   hướng đối tượng: C++, Java, C# v.v.



    2009-2010                   OOP - http://mim.hus.edu.vn/elearning   6
Giới thiệu (3)
   Lập trình hướng đối tượng:
        Ý tưởng: Mô hình hóa các thực thể thành các đối
         tượng độc lập, có thể tương tác bằng cách trao đổi
         thông báo cho nhau
        Lịch sử:
               1967: ngôn ngữ Simula triển khai khái niệm lớp (class)
               1976: ngôn ngữ Smalltalk triển khai khái niệm đóng gói,
                thừa kế, đa hình – các khái niệm cơ bản của lập trình hướng
                đối tượng
               Các ngôn ngữ khác: C++, Objective-C, Eiffel, Java, C#,
                Visual Basic.NET, Python, Ruby, v.v.


    2009-2010                 OOP - http://mim.hus.edu.vn/elearning       7
Nhập môn
   Giới thiệu
   Các khái niệm cơ bản của lập trình
    hướng đối tượng
   Giới thiệu ngôn ngữ lập trình Java




2009-2010      OOP - http://mim.hus.edu.vn/elearning   8
Đối tượng (object)
   Biểu diễn trừu tượng của các thực thể (vật thể
    hay phi vật thể)
   Mô tả đối tượng:
        Thuộc tính (attribute): mô tả đặc điểm đối tượng
        Phương thức, còn gọi là hàm thành viên (method,
         member function): mô tả các hành vi có thể của đối
         tượng
        Lập trình: thuộc tính – biến, phương thức – hàm
        Tập hợp giá trị hiện thời của các thuộc tính: trạng
         thái của đối tượng

    2009-2010           OOP - http://mim.hus.edu.vn/elearning   9
Chương trình hướng đối tượng

                 Object                                             Object communication



       Function 1         Function 2
                                                             Object 1            Message


Function                               Function
   6
                  DATA                    3                                          Object 3


      Function 5          Function 4                         Object 2


           2009-2010                     OOP - http://mim.hus.edu.vn/elearning                  10
Đối tượng – Ví dụ (1)
   Ô tô
           Thuộc tính:
                Biển số
                Loại xe
                Màu sơn
                ...
           Phương thức:
                Tăng tốc độ
                Bóp còi
                ...


2009-2010                      OOP - http://mim.hus.edu.vn/elearning   11
Đối tượng – Ví dụ (2)
   Mô tả một điểm trong mặt phẳng tọa
    độ Oxy
           Thuộc tính: x, y (tung độ, hoành độ)
           Hành vi của các đối tượng điểm:
                setX(m), setY(n)
                getX(), getY()
                printXY()



2009-2010                 OOP - http://mim.hus.edu.vn/elearning   12
Đặc điểm LT hướng đối tượng
   Chương trình hướng đối tượng:
        Mô tả các đối tượng (thuộc tính, phương
         thức)
        Chương trình chính: tạo các đối tượng, gửi
         thông báo yêu cầu thực hiện các hành vi nào
         đó (gọi hàm)




    2009-2010        OOP - http://mim.hus.edu.vn/elearning   13
Đặc điểm LT hướng đối tượng
   Trừu tượng dữ liệu (abstraction): chương trình chỉ quan
    tâm đến các đặc tính của đối tượng (gồm có gì, làm gì),
    bỏ qua các tiểu tiết (làm như thế nào).
   Đóng gói dữ liệu (encapsulation): Cơ chế đảm bảo môi
    trường bên ngoài chỉ có thể tác động vào đối tượng
    thông qua các dịch vụ (phương thức) cho bởi người viết
    mã chương trình => tính toàn vẹn dữ liệu
   Tính đa hình (polymorphism): cùng một thông báo, mỗi
    đối tượng “phản ứng” khác nhau
   Kế thừa (inheritance): Cho phép đối tượng này lấy lại
    (kế thừa) những đặc tính sẵn có của đối tượng khác

    2009-2010         OOP - http://mim.hus.edu.vn/elearning   14
Đặc điểm LT hướng đối tượng
   Hệ quả:
        Người sử dụng chỉ cần biết đặc tả của đối
         tượng
        Thay đổi mã bên trong đối tượng không ảnh
         hưởng gì đến chương trình bên ngoài sử
         dụng đối tượng
        Ưu điểm: tính tái sử dụng cao, tăng năng
         suất, đơn giản hóa độ phức tạp khi bảo
         trì/mở rộng phần mềm

    2009-2010        OOP - http://mim.hus.edu.vn/elearning   15
Lớp
   Lớp (class): cấu trúc (“kiểu dữ liệu”) của đối
    tượng. Mỗi đối tượng sinh ra nhờ việc thực thể
    hóa (instanciation) một lớp.
        Thuộc tính: dữ liệu biểu diễn trạng thái đối tượng
        Phương thức (hàm): thao tác áp dụng được cho các
         đối tượng. Đặc biệt:
               hàm dựng (constructor) – cài đặt giá trị ban đầu, đăng kí bộ
                nhớ, v.v.,
               hàm hủy (destructor) – thực hiện các thao tác cần thiết khi
                hủy bỏ 1 đối tượng

    2009-2010                  OOP - http://mim.hus.edu.vn/elearning      16
Đóng gói dữ liệu
   Định nghĩa các mức truy cập khác nhau
    tới các thuộc tính/phương thức của một
    đối tượng:
        Công khai (public): biến/hàm truy cập được
         từ tất cả các lớp khác
        Bảo vệ (protected): biến/hàm chỉ truy cập
         được trong nội bộ hoặc các lớp con của nó
        Riêng (private): biến/hàm chỉ có thể truy cập
         được trong nội bộ lớp

    2009-2010         OOP - http://mim.hus.edu.vn/elearning   17
Kế thừa
   Tạo một lớp mới (lớp con - subclass) từ
    một lớp đã có (lớp cha – parent class)
        Lớp mới kế thừa tất cả các thuộc
         tính/phương thức của lớp cha
        Có thể bổ sung các thuộc tính/phương thức
         mới
        Ví dụ: Lớp “xe tải” kế thừa từ lớp “ô tô”
   Một số ngôn ngữ cho phép kế thừa bội
    (vd: C++)
    2009-2010        OOP - http://mim.hus.edu.vn/elearning   18
Đa hình
   Các loại đa hình:
        Tải bội (overloading): cùng một tên hàm, chức năng
         tương tự nhưng bản chất thực hiện khác nhau (ví dụ:
         phép cộng - số, xâu).
        Định nghĩa chồng (overriding): Cho phép định nghĩa
         lại hàm thuộc lớp cha thành hàm mới trong lớp con
         (ví dụ: định nghĩa hàm di chuyển cho các lớp con
         của lớp Quân Cờ)
        Tham biến (template): cùng một tên hàm trong một
         lớp, nhưng số lượng tham biến khác nhau hoặc kiểu
         các tham biến khác nhau.

    2009-2010           OOP - http://mim.hus.edu.vn/elearning   19
Nhập môn
   Giới thiệu
   Các khái niệm cơ bản của lập trình
    hướng đối tượng
   Giới thiệu ngôn ngữ lập trình Java




2009-2010      OOP - http://mim.hus.edu.vn/elearning   20
Phân loại ngôn ngữ lập trình
    hướng đối tượng
   Biên dịch hoàn toàn ra mã máy (C++,
    Eiffel, v.v.): hiệu năng cao hơn
   Biên dịch ra mã byte chạy bởi máy ảo
    (Smalltalk, Java, v.v.): chương trình ổn
    định, chạy trong mọi môi trường
   Thông dịch hoặc ngôn ngữ script (Ruby,
    Python, JavaScript, v.v.)

    2009-2010    OOP - http://mim.hus.edu.vn/elearning   21
Ngôn ngữ thực hành: Java
   Phiên bản: J2SE 5.0 (JDK 5.0)
        http://java.sun.com




    2009-2010        OOP - http://mim.hus.edu.vn/elearning   22
Java – tổng quan (1)
   Lịch sử:
        Do hãng Sun Microsystems triển khai năm 1991
               Dự án Green: chế tạo điều khiển từ xa vạn năng chứa hệ điều
                hành có thể điều khiển toàn bộ các đồ điện tử trong nhà
               Cần một ngôn ngữ lập trình tích hợp trong các đồ điện tử gia dụng
                để điều khiển và cho phép chúng tương tác/trao đổi với nhau:
                ngôn ngữ hướng đối tượng
               C++: phức tạp, kém tính mang được (portable)
               James Gosling: định nghĩa ngôn ngữ lập trình mới mang tên Oak,
                sau đổi tên là Java: cơ bản dựa trên C++, chương trình đơn
                giản/gọn nhẹ hơn, có tính mang được
        Java được đánh giá là thích hợp cho web: chương trình nhỏ
         gọn, chạy trên mọi máy
        1994: Trình duyệt HotJava cho phép chạy Java applets. Từ cuối
         1995: Java phát triển mạnh với sự hỗ trợ của Netscape
    2009-2010                   OOP - http://mim.hus.edu.vn/elearning          23
Java – tổng quan (2)
   So sánh Java và C++:
        Cú pháp Java gần như C++
        Java không có các đặc tính phức tạp (dễ gây lỗi lập
         trình) của C++:
               Không dùng con trỏ
               Không dùng thừa kế bội
               Giải phóng bộ nhớ tự động
               Kiểu xâu kí tự và mảng được tích hợp trong ngôn ngữ
        Java chạy chậm hơn C++ (đổi lại tính mang được)
   Các phiên bản của Java:
        1.0, 1.1, v.v., 1.5 (Java 5), 1.6 (Java 6)

    2009-2010                 OOP - http://mim.hus.edu.vn/elearning   24
Java – tổng quan (3)
   Chương trình Java:
        Biên dịch: tệp mã nguồn ASCII (*.java) => tệp mã
         bytecode (*.class)
        Chạy chương trình: máy ảo Java (JVM: Java Virtual
         Machine)
   Ứng dụng (application) và ứng dụng con
    (applet):
        Ứng dụng: chương trình thông thường chạy trên máy
        Ứng dụng con nhúng vào trình duyệt Internet: có
         tính năng giới hạn (để đảm bảo tính an toàn) dùng
         cho ứng dụng web


    2009-2010           OOP - http://mim.hus.edu.vn/elearning   25
Java – tổng quan (4)
   Phát triển phần mềm bằng Java:
        Bộ công cụ hỗ trợ JDK (Java Development Kit), miễn
         phí
               javac: trình biên dịch (*.java -> *.class)
               java: máy ảo thực hiện ứng dụng
               appletviewer: máy ảo thực hiện applet
               jdb: debugger
               javap: trình dịch ngược (*.class -> *.java)
               javadoc: bộ sinh tài liệu chương trình
               jar: trình nén các tệp bytecode
        Các phiên bản của JDK: phiên bản Java + môi
         trường (Windows, Linux, Unix) – jdk1.6

    2009-2010                  OOP - http://mim.hus.edu.vn/elearning   26
Tài liệu tham khảo
   Học liệu: BigJava
    http://www.horstmann.com/bigjava2.html
   Giáo trình Lập trình Java
    (laptrinh_java.pdf)




2009-2010       OOP - http://mim.hus.edu.vn/elearning   27
Phần tiếp theo...
   Học liệu: BigJava
    http://www.horstmann.com/bigjava2.html
   27 chương
   Tự đọc các chương: 5, 10, 12, 14, 16,
    18, 19, 24, 25, 26, 27




2009-2010       OOP - http://mim.hus.edu.vn/elearning   28

Contenu connexe

Tendances

Ky thuat l.trinh_java
Ky thuat l.trinh_javaKy thuat l.trinh_java
Ky thuat l.trinh_java
Lam Man
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06
xcode_esvn
 
Chuong 03-lop-kieudulieutruutuong
Chuong 03-lop-kieudulieutruutuongChuong 03-lop-kieudulieutruutuong
Chuong 03-lop-kieudulieutruutuong
barrister90
 

Tendances (20)

BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
 
Bai11 ooad bieu_dolop
Bai11 ooad bieu_dolopBai11 ooad bieu_dolop
Bai11 ooad bieu_dolop
 
Bai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaBai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethua
 
Bai02 java introduction
Bai02 java introductionBai02 java introduction
Bai02 java introduction
 
Java Tieng Viet
Java Tieng VietJava Tieng Viet
Java Tieng Viet
 
Chapter1
Chapter1Chapter1
Chapter1
 
Bai03 xay dunglop
Bai03 xay dunglopBai03 xay dunglop
Bai03 xay dunglop
 
Ky thuat l.trinh_java
Ky thuat l.trinh_javaKy thuat l.trinh_java
Ky thuat l.trinh_java
 
Oop unit 13 tổng quan về uml
Oop unit 13 tổng quan về umlOop unit 13 tổng quan về uml
Oop unit 13 tổng quan về uml
 
Oop unit 03 xây dựng lớp
Oop unit 03 xây dựng lớpOop unit 03 xây dựng lớp
Oop unit 03 xây dựng lớp
 
[Cntt] all java
[Cntt] all java[Cntt] all java
[Cntt] all java
 
[Cntt] bài giảng java khtn hcm
[Cntt] bài giảng java   khtn hcm[Cntt] bài giảng java   khtn hcm
[Cntt] bài giảng java khtn hcm
 
Bai04 tao vasudungdoituong
Bai04 tao vasudungdoituongBai04 tao vasudungdoituong
Bai04 tao vasudungdoituong
 
Bai08 lap trinhtongquat
Bai08 lap trinhtongquatBai08 lap trinhtongquat
Bai08 lap trinhtongquat
 
bai tap oop
bai tap oopbai tap oop
bai tap oop
 
Ket tap, ke thua
Ket tap, ke thuaKet tap, ke thua
Ket tap, ke thua
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06
 
Oop 6
Oop 6Oop 6
Oop 6
 
Chuong 03-lop-kieudulieutruutuong
Chuong 03-lop-kieudulieutruutuongChuong 03-lop-kieudulieutruutuong
Chuong 03-lop-kieudulieutruutuong
 
Chuong 07 lop
Chuong 07 lopChuong 07 lop
Chuong 07 lop
 

En vedette (10)

Chapter 3 (cont)
Chapter 3 (cont)Chapter 3 (cont)
Chapter 3 (cont)
 
Chapter 1
Chapter 1Chapter 1
Chapter 1
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson00
Lap trinh huong_doi_tuong_cpp_dhct_lesson00Lap trinh huong_doi_tuong_cpp_dhct_lesson00
Lap trinh huong_doi_tuong_cpp_dhct_lesson00
 
Chapter 2
Chapter 2Chapter 2
Chapter 2
 
Lập trình hướng đối tượng với C++
Lập trình hướng đối tượng với C++Lập trình hướng đối tượng với C++
Lập trình hướng đối tượng với C++
 
Bai Giang 9
Bai Giang 9Bai Giang 9
Bai Giang 9
 
Lesson00
Lesson00Lesson00
Lesson00
 
LTHDT
LTHDTLTHDT
LTHDT
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson01
Lap trinh huong_doi_tuong_cpp_dhct_lesson01Lap trinh huong_doi_tuong_cpp_dhct_lesson01
Lap trinh huong_doi_tuong_cpp_dhct_lesson01
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
 

Similaire à Oop 0

00 udpt introduction - th2010
00 udpt   introduction - th201000 udpt   introduction - th2010
00 udpt introduction - th2010
Nguyen Son
 
Hdth06 ltudql02-multi languages
Hdth06 ltudql02-multi languagesHdth06 ltudql02-multi languages
Hdth06 ltudql02-multi languages
Dũng Đinh
 
[Bao cao]tim hieu ve mo hinh lap trinh
[Bao cao]tim hieu ve mo hinh lap trinh[Bao cao]tim hieu ve mo hinh lap trinh
[Bao cao]tim hieu ve mo hinh lap trinh
Thùy Linh
 
OOP_01_Tong Quan LTHDT.pdf
OOP_01_Tong Quan LTHDT.pdfOOP_01_Tong Quan LTHDT.pdf
OOP_01_Tong Quan LTHDT.pdf
ssuserd01a5c
 
Khái niệm OOP, Các tính chất của OOP, Class & Object
Khái niệm OOP, Các tính chất của OOP, Class & ObjectKhái niệm OOP, Các tính chất của OOP, Class & Object
Khái niệm OOP, Các tính chất của OOP, Class & Object
CodeGym Đà Nẵng
 
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
tPhan78
 

Similaire à Oop 0 (20)

Oop 2
Oop 2Oop 2
Oop 2
 
2 introduction to oop
2 introduction to oop2 introduction to oop
2 introduction to oop
 
Lớp học lập trình android tại hà đông
Lớp học lập trình android tại hà đôngLớp học lập trình android tại hà đông
Lớp học lập trình android tại hà đông
 
00 udpt introduction - th2010
00 udpt   introduction - th201000 udpt   introduction - th2010
00 udpt introduction - th2010
 
Oop 1
Oop 1Oop 1
Oop 1
 
Chapter 4
Chapter 4Chapter 4
Chapter 4
 
Oop 7
Oop 7Oop 7
Oop 7
 
Print_to_OOP.pdf
Print_to_OOP.pdfPrint_to_OOP.pdf
Print_to_OOP.pdf
 
PMMNM.docx
PMMNM.docxPMMNM.docx
PMMNM.docx
 
Oop 8
Oop 8Oop 8
Oop 8
 
Mock object
Mock objectMock object
Mock object
 
Hdth06 ltudql02-multi languages
Hdth06 ltudql02-multi languagesHdth06 ltudql02-multi languages
Hdth06 ltudql02-multi languages
 
Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...
Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...
Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...
 
[Bao cao]tim hieu ve mo hinh lap trinh
[Bao cao]tim hieu ve mo hinh lap trinh[Bao cao]tim hieu ve mo hinh lap trinh
[Bao cao]tim hieu ve mo hinh lap trinh
 
Chuong2 c
Chuong2 c Chuong2 c
Chuong2 c
 
Oop 3
Oop 3Oop 3
Oop 3
 
OOP_01_Tong Quan LTHDT.pdf
OOP_01_Tong Quan LTHDT.pdfOOP_01_Tong Quan LTHDT.pdf
OOP_01_Tong Quan LTHDT.pdf
 
Khóa học lập trình ios
Khóa học lập trình iosKhóa học lập trình ios
Khóa học lập trình ios
 
Khái niệm OOP, Các tính chất của OOP, Class & Object
Khái niệm OOP, Các tính chất của OOP, Class & ObjectKhái niệm OOP, Các tính chất của OOP, Class & Object
Khái niệm OOP, Các tính chất của OOP, Class & Object
 
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
 

Plus de Thai Hoc Vu (9)

Ngôn ngữ tiếng nhật hiện đại
Ngôn ngữ tiếng nhật hiện đạiNgôn ngữ tiếng nhật hiện đại
Ngôn ngữ tiếng nhật hiện đại
 
Bài tập ôn lập trình
Bài tập ôn lập trìnhBài tập ôn lập trình
Bài tập ôn lập trình
 
Giáo trình uốn tóc phần 1
Giáo trình uốn tóc phần 1Giáo trình uốn tóc phần 1
Giáo trình uốn tóc phần 1
 
Danh mục cable
Danh mục cableDanh mục cable
Danh mục cable
 
OOP-9
OOP-9OOP-9
OOP-9
 
Oop 5
Oop 5Oop 5
Oop 5
 
Oop 4
Oop 4Oop 4
Oop 4
 
Oop 13
Oop 13Oop 13
Oop 13
 
Oop 11
Oop 11Oop 11
Oop 11
 

Dernier

xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
Xem Số Mệnh
 
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfSLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
hoangtuansinh1
 
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
ChuThNgnFEFPLHN
 

Dernier (20)

Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhkinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
 
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdfxemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
 
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
Bài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnBài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiện
 
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
 
Access: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.pptAccess: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.ppt
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfSLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
 
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 

Oop 0

  • 1. Lập trình hướng đối tượng Object-oriented Programming Giảng viên: Nguyễn Thị Minh Huyền nguyenthiminhhuyen@hus.edu.vn Đỗ Thanh Hà dothanhha@hus.edu.vn OOP - 2009-2010 http://mim.hus.edu.vn/elearning 1
  • 2. Môn học OOP  2 tín chỉ: 30 tiết  Nghe giảng lý thuyết trên lớp: 15t  Thực hành tại phòng máy: 12t x 2  Tự học: 3t  Đề cương môn học 2009-2010 OOP - http://mim.hus.edu.vn/elearning 2
  • 3. Tổ chức học tập  Giờ lí thuyết + thực hành: Phòng máy B (502-T5)  Lịch học: Chiều thứ Hai hàng tuần, một số buổi sáng thứ Tư (xem lịch cụ thể kèm theo)  Ghép nhóm 2-3 người: lên danh sách (cuối giờ)  Bài tập thực hành:  Chuẩn bị chương trình ở nhà  Phân tích, chữa bài tập, chạy chương trình tại phòng máy  Kiểm tra kiến thức:  Kiểm tra thường xuyên (bài tập về nhà theo nhóm 2 người)  Kiểm tra giữa kì  Bài tập lớn (nhóm 4-5 người) + trả lời câu hỏi trên giấy 2009-2010 OOP - http://mim.hus.edu.vn/elearning 3
  • 4. Nhập môn  Giới thiệu  Các khái niệm cơ bản của lập trình hướng đối tượng  Giới thiệu ngôn ngữ lập trình Java 2009-2010 OOP - http://mim.hus.edu.vn/elearning 4
  • 5. Giới thiệu (1)  Công nghệ phần mềm (software engineering):  Đặc tả yêu cầu (requirements): làm gì?  Phân tích (analysis): làm thế nào?  Thiết kế (design): tổ chức ra sao?  Lập trình (coding): viết mã chương trình  Dò lỗi (debugging): sửa lỗi  Kiểm tra (testing): đảm bảo chương trình chạy đúng  Phân phối (deployment): đưa vào sử dụng  Bảo trì (maintenance): tiếp tục hoàn thiện, phát triển, giữ phần mềm hoạt động 2009-2010 OOP - http://mim.hus.edu.vn/elearning 5
  • 6. Giới thiệu (2)  Phân loại ngôn ngữ lập trình:  Ngôn ngữ máy, hợp ngữ  Ngôn ngữ lập trình bậc cao  Lập trình thủ tục: Pascal, C, v.v.  Lập trình hàm: Lisp, CML, v.v.  Lập trình mô tả (lôgic): Prolog, v.v.  Lập trình hướng đối tượng: C++, Java, C# v.v. 2009-2010 OOP - http://mim.hus.edu.vn/elearning 6
  • 7. Giới thiệu (3)  Lập trình hướng đối tượng:  Ý tưởng: Mô hình hóa các thực thể thành các đối tượng độc lập, có thể tương tác bằng cách trao đổi thông báo cho nhau  Lịch sử:  1967: ngôn ngữ Simula triển khai khái niệm lớp (class)  1976: ngôn ngữ Smalltalk triển khai khái niệm đóng gói, thừa kế, đa hình – các khái niệm cơ bản của lập trình hướng đối tượng  Các ngôn ngữ khác: C++, Objective-C, Eiffel, Java, C#, Visual Basic.NET, Python, Ruby, v.v. 2009-2010 OOP - http://mim.hus.edu.vn/elearning 7
  • 8. Nhập môn  Giới thiệu  Các khái niệm cơ bản của lập trình hướng đối tượng  Giới thiệu ngôn ngữ lập trình Java 2009-2010 OOP - http://mim.hus.edu.vn/elearning 8
  • 9. Đối tượng (object)  Biểu diễn trừu tượng của các thực thể (vật thể hay phi vật thể)  Mô tả đối tượng:  Thuộc tính (attribute): mô tả đặc điểm đối tượng  Phương thức, còn gọi là hàm thành viên (method, member function): mô tả các hành vi có thể của đối tượng  Lập trình: thuộc tính – biến, phương thức – hàm  Tập hợp giá trị hiện thời của các thuộc tính: trạng thái của đối tượng 2009-2010 OOP - http://mim.hus.edu.vn/elearning 9
  • 10. Chương trình hướng đối tượng Object Object communication Function 1 Function 2 Object 1 Message Function Function 6 DATA 3 Object 3 Function 5 Function 4 Object 2 2009-2010 OOP - http://mim.hus.edu.vn/elearning 10
  • 11. Đối tượng – Ví dụ (1)  Ô tô  Thuộc tính:  Biển số  Loại xe  Màu sơn  ...  Phương thức:  Tăng tốc độ  Bóp còi  ... 2009-2010 OOP - http://mim.hus.edu.vn/elearning 11
  • 12. Đối tượng – Ví dụ (2)  Mô tả một điểm trong mặt phẳng tọa độ Oxy  Thuộc tính: x, y (tung độ, hoành độ)  Hành vi của các đối tượng điểm:  setX(m), setY(n)  getX(), getY()  printXY() 2009-2010 OOP - http://mim.hus.edu.vn/elearning 12
  • 13. Đặc điểm LT hướng đối tượng  Chương trình hướng đối tượng:  Mô tả các đối tượng (thuộc tính, phương thức)  Chương trình chính: tạo các đối tượng, gửi thông báo yêu cầu thực hiện các hành vi nào đó (gọi hàm) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 13
  • 14. Đặc điểm LT hướng đối tượng  Trừu tượng dữ liệu (abstraction): chương trình chỉ quan tâm đến các đặc tính của đối tượng (gồm có gì, làm gì), bỏ qua các tiểu tiết (làm như thế nào).  Đóng gói dữ liệu (encapsulation): Cơ chế đảm bảo môi trường bên ngoài chỉ có thể tác động vào đối tượng thông qua các dịch vụ (phương thức) cho bởi người viết mã chương trình => tính toàn vẹn dữ liệu  Tính đa hình (polymorphism): cùng một thông báo, mỗi đối tượng “phản ứng” khác nhau  Kế thừa (inheritance): Cho phép đối tượng này lấy lại (kế thừa) những đặc tính sẵn có của đối tượng khác 2009-2010 OOP - http://mim.hus.edu.vn/elearning 14
  • 15. Đặc điểm LT hướng đối tượng  Hệ quả:  Người sử dụng chỉ cần biết đặc tả của đối tượng  Thay đổi mã bên trong đối tượng không ảnh hưởng gì đến chương trình bên ngoài sử dụng đối tượng  Ưu điểm: tính tái sử dụng cao, tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì/mở rộng phần mềm 2009-2010 OOP - http://mim.hus.edu.vn/elearning 15
  • 16. Lớp  Lớp (class): cấu trúc (“kiểu dữ liệu”) của đối tượng. Mỗi đối tượng sinh ra nhờ việc thực thể hóa (instanciation) một lớp.  Thuộc tính: dữ liệu biểu diễn trạng thái đối tượng  Phương thức (hàm): thao tác áp dụng được cho các đối tượng. Đặc biệt:  hàm dựng (constructor) – cài đặt giá trị ban đầu, đăng kí bộ nhớ, v.v.,  hàm hủy (destructor) – thực hiện các thao tác cần thiết khi hủy bỏ 1 đối tượng 2009-2010 OOP - http://mim.hus.edu.vn/elearning 16
  • 17. Đóng gói dữ liệu  Định nghĩa các mức truy cập khác nhau tới các thuộc tính/phương thức của một đối tượng:  Công khai (public): biến/hàm truy cập được từ tất cả các lớp khác  Bảo vệ (protected): biến/hàm chỉ truy cập được trong nội bộ hoặc các lớp con của nó  Riêng (private): biến/hàm chỉ có thể truy cập được trong nội bộ lớp 2009-2010 OOP - http://mim.hus.edu.vn/elearning 17
  • 18. Kế thừa  Tạo một lớp mới (lớp con - subclass) từ một lớp đã có (lớp cha – parent class)  Lớp mới kế thừa tất cả các thuộc tính/phương thức của lớp cha  Có thể bổ sung các thuộc tính/phương thức mới  Ví dụ: Lớp “xe tải” kế thừa từ lớp “ô tô”  Một số ngôn ngữ cho phép kế thừa bội (vd: C++) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 18
  • 19. Đa hình  Các loại đa hình:  Tải bội (overloading): cùng một tên hàm, chức năng tương tự nhưng bản chất thực hiện khác nhau (ví dụ: phép cộng - số, xâu).  Định nghĩa chồng (overriding): Cho phép định nghĩa lại hàm thuộc lớp cha thành hàm mới trong lớp con (ví dụ: định nghĩa hàm di chuyển cho các lớp con của lớp Quân Cờ)  Tham biến (template): cùng một tên hàm trong một lớp, nhưng số lượng tham biến khác nhau hoặc kiểu các tham biến khác nhau. 2009-2010 OOP - http://mim.hus.edu.vn/elearning 19
  • 20. Nhập môn  Giới thiệu  Các khái niệm cơ bản của lập trình hướng đối tượng  Giới thiệu ngôn ngữ lập trình Java 2009-2010 OOP - http://mim.hus.edu.vn/elearning 20
  • 21. Phân loại ngôn ngữ lập trình hướng đối tượng  Biên dịch hoàn toàn ra mã máy (C++, Eiffel, v.v.): hiệu năng cao hơn  Biên dịch ra mã byte chạy bởi máy ảo (Smalltalk, Java, v.v.): chương trình ổn định, chạy trong mọi môi trường  Thông dịch hoặc ngôn ngữ script (Ruby, Python, JavaScript, v.v.) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 21
  • 22. Ngôn ngữ thực hành: Java  Phiên bản: J2SE 5.0 (JDK 5.0)  http://java.sun.com 2009-2010 OOP - http://mim.hus.edu.vn/elearning 22
  • 23. Java – tổng quan (1)  Lịch sử:  Do hãng Sun Microsystems triển khai năm 1991  Dự án Green: chế tạo điều khiển từ xa vạn năng chứa hệ điều hành có thể điều khiển toàn bộ các đồ điện tử trong nhà  Cần một ngôn ngữ lập trình tích hợp trong các đồ điện tử gia dụng để điều khiển và cho phép chúng tương tác/trao đổi với nhau: ngôn ngữ hướng đối tượng  C++: phức tạp, kém tính mang được (portable)  James Gosling: định nghĩa ngôn ngữ lập trình mới mang tên Oak, sau đổi tên là Java: cơ bản dựa trên C++, chương trình đơn giản/gọn nhẹ hơn, có tính mang được  Java được đánh giá là thích hợp cho web: chương trình nhỏ gọn, chạy trên mọi máy  1994: Trình duyệt HotJava cho phép chạy Java applets. Từ cuối 1995: Java phát triển mạnh với sự hỗ trợ của Netscape 2009-2010 OOP - http://mim.hus.edu.vn/elearning 23
  • 24. Java – tổng quan (2)  So sánh Java và C++:  Cú pháp Java gần như C++  Java không có các đặc tính phức tạp (dễ gây lỗi lập trình) của C++:  Không dùng con trỏ  Không dùng thừa kế bội  Giải phóng bộ nhớ tự động  Kiểu xâu kí tự và mảng được tích hợp trong ngôn ngữ  Java chạy chậm hơn C++ (đổi lại tính mang được)  Các phiên bản của Java:  1.0, 1.1, v.v., 1.5 (Java 5), 1.6 (Java 6) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 24
  • 25. Java – tổng quan (3)  Chương trình Java:  Biên dịch: tệp mã nguồn ASCII (*.java) => tệp mã bytecode (*.class)  Chạy chương trình: máy ảo Java (JVM: Java Virtual Machine)  Ứng dụng (application) và ứng dụng con (applet):  Ứng dụng: chương trình thông thường chạy trên máy  Ứng dụng con nhúng vào trình duyệt Internet: có tính năng giới hạn (để đảm bảo tính an toàn) dùng cho ứng dụng web 2009-2010 OOP - http://mim.hus.edu.vn/elearning 25
  • 26. Java – tổng quan (4)  Phát triển phần mềm bằng Java:  Bộ công cụ hỗ trợ JDK (Java Development Kit), miễn phí  javac: trình biên dịch (*.java -> *.class)  java: máy ảo thực hiện ứng dụng  appletviewer: máy ảo thực hiện applet  jdb: debugger  javap: trình dịch ngược (*.class -> *.java)  javadoc: bộ sinh tài liệu chương trình  jar: trình nén các tệp bytecode  Các phiên bản của JDK: phiên bản Java + môi trường (Windows, Linux, Unix) – jdk1.6 2009-2010 OOP - http://mim.hus.edu.vn/elearning 26
  • 27. Tài liệu tham khảo  Học liệu: BigJava http://www.horstmann.com/bigjava2.html  Giáo trình Lập trình Java (laptrinh_java.pdf) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 27
  • 28. Phần tiếp theo...  Học liệu: BigJava http://www.horstmann.com/bigjava2.html  27 chương  Tự đọc các chương: 5, 10, 12, 14, 16, 18, 19, 24, 25, 26, 27 2009-2010 OOP - http://mim.hus.edu.vn/elearning 28