Funclass Forum | 122's Mini Forum
Forum Funclass.coo.me Rất vui Vì các bạn đã ghé thăm
Funclass Forum | 122's Mini Forum
Forum Funclass.coo.me Rất vui Vì các bạn đã ghé thăm
Funclass Forum | 122's Mini Forum
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.


Funclass.coo.me
 
Trang ChínhPortalGalleryTìm kiếmLatest imagesĐăng kýĐăng NhậpSite Kỷ Niệm

Share | 
 

 Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
monkeydkzat
Chủ Tịch Quốc Hội
Chủ Tịch Quốc Hội
monkeydkzat

Cầm Tinh : Scorpio
Tổng số bài gửi : 132
Vàng : 623
Thanks: : 0
Birthday : 20/11/1993
Join date : 19/03/2010
Age : 30
Đến từ : Bến Tre

Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại Empty
Bài gửiTiêu đề: Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại   Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại I_icon_minitimeFri Mar 19, 2010 2:20 pm

Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại

Hiện nay các ngôn ngữ OOP phổ biến nhất đều tập trung theo phương pháp phân lớp trong đó có C++, Java, C# và Visual Basic.NET. Sau đây là một số khái niệm mà các ngôn ngữ này thường dùng tới
Lớp (class)



Một lớp có thể được hiểu là khuôn mẫu để tạo ra các đối tượng. Trong một lớp, người ta thường dùng các biến để mô tả các thuộc tính và các hàm để mô tả các phương thức của đối tượng. Khi đã định nghĩa được lớp, ta có thể tạo ra các đối tượng từ lớp này. Để việc sử dụng được dễ dàng, thông qua hệ thống hàm tạo (constructor), người ta dùng lớp như một kiểu dữ liệu để tạo ra các đối tượng.



Lớp con (subclass)



Lớp con là một lớp thông thường nhưng có thêm tính chất kế thừa một phần hay toàn bộ các đặc tính của một lớp khác. Lớp chia sẻ sự kế thừa gọi là Lớp cha (parent class). ll
Lớp trừu tượng hay lớp cơ sở trừu tượng (abstract class)


Lớp trừu tượng là một lớp mà nó không thể thực thể hóa thành một đối tượng thực dụng được. Lớp này được thiết kế nhằm tạo ra một lớp có các đặc tính tổng quát nhưng bản thân lớp đó chưa có ý nghĩa (hay không đủ ý nghĩa) để có thể tiến hành viết mã cho việc thực thể hóa. (xem thí dụ)



Thí dụ: Lớp "hinh" được định nghĩa không có dữ liệu nội tại và chỉ có các phương thức (hàm nội tại) "tinh_chu_vi", "tinh_dien_tich". Nhưng vì lớp hinh này chưa xác định được đầy đủ các đặc tính của nó (cụ thể các biến nội tại là tọa độ các đỉnh nếu là đa giác, là đường bán kính và toạ độ tâm nếu là hình tròn, ...) nên nó chỉ có thể được viết thành một lớp trừu tượng. Sau đó, người lập trình có thể tạo ra các lớp con chẳng hạn như là lớp "tam_giac", lớp "hinh_tron", lớp "tu_giac",.... Và trong các lớp con này người viết mã sẽ cung cấp các dữ liệu nội tại (như là biến nội tại r làm bán kính và hằng số nội tại Pi cho lớp "hinh_tron" và sau đó viết mã cụ thể cho các phương thức "tinh_chu_vi" và "tinh_dien_tich").
Phương thức (method)


Phương thức của một lớp thường được dùng để mô tả các hành vi của đối tượng (hoặc của lớp). Ví dụ như đối tượng thuộc lớp điện thoại có các hành vi sau: Đổ chuông, chuyển tín hiệu từ sóng sang dạng nghe được, chuyển tín hiệu giọng nói sang dạng chuẩn, chuyển tín hiệu lên tổng đài.v.v. Khi thiết kế, người ta có thể dùng các phương thức để mô tả và thực hiện các hành vi của đối tượng. Mỗi phương thức thường được định nghĩa là một hàm, các thao tác để thực hiện hành vi đó được viết tại nội dung của hàm. Khi thực hiện hành vi này, đối tượng có thể phải thực hiện các hành vi khác. Ví dụ như điện thoại phải chuyển tín hiệu giọng nói sang dạng chuẩn trước khi chuyển lên tổng đài. Cho nên một phương thức trong một lớp có thể sử dụng phương thức khác trong quá trình thực hiện hành vi của mình.
Người ta còn định nghĩa thêm vài loại phương thức đặc biệt:

  • Hàm tạo (constructor) là hàm được dùng để tạo ra một đối tượng, cài đặt các giá trị ban đầu cho các thuộc tính của đối tượng đó.
  • Hàm hủy (destructor) là hàm dùng vào việc làm sạch bộ nhớ đã dùng để lưu đối tượng và hủy bỏ tên của một đối tượng sau khi đã dùng xong, trong đó có thể bao gồm cả việc xóa các con trỏ nội tại và trả về các phần bộ nhớ mà đối tượng đã dùng.

Nhiều lớp thư viện có sẵn hàm tạo mặc định (thông thường không có tham số) và hàm huỷ.
Thuộc tính (attribute)


Thuộc tính của một lớp bao gồm các biến, các hằng, hay tham số nội tại của lớp đó. Ở đây, vai trò quan trọng nhất của các thuộc tính là các biến vì chúng sẽ có thể bị thay đổi trong suốt quá trình hoạt động của một đối tượng. Các thuộc tính có thể được xác định kiểu và kiểu của chúng có thể là các kiểu dữ liệu cổ điển hay đó là một lớp đã định nghĩa từ trước. Như đã ghi, khi một lớp đã được thực thể hoá thành đối tượng cụ thể thì tập hợp các giá trị của các biến nội tại làm thành trạng thái của đối tượng. Giống như trường hợp của phương thức, tùy theo người viết mã, biến nội tại có thể chỉ được dùng bên trong các phương thức của chính lớp đó, có thể cho phép các câu lệnh bên ngoài lớp, hay chỉ cho phép các lớp có quan hệ đặc biệt như là quan hệ lớp con, (và quan hệ bạn bè (friend) trong C++) được phép dùng tới nó (hay thay đổi giá trị của nó). Mỗi thuộc tính của một lớp còn được gọi là thành viên dữ liệu của lớp đó.
Quan hệ giữa lớp và đối tượng


Lớp trong quan niệm thông thường là cách phân loại các thực thể dựa trên những đặc điểm chung của các thực thể đó. Do đó lớp là khái niệm mang tính trừu tượng hóa rất cao. Ví dụ như lớp "người" dùng để chỉ những thực thể sống trên trái đất có những thuộc tính: có hai chân,hai bàn tay khéo léo, có tư duy, ngôn ngữ v.v và có phương thức: giao tiếp bằng ngôn ngữ, tư duy, đi, đứng bằng hai chân... Khi đó hai người cụ thể ông A, ông B là các đối tượng thuộc lớp người. Trong ngôn ngữ lập trình, ta cũng hiểu khái niệm lớp tương tự, cho nên ta có quá trình "Thực thể hóa" sau, tạo một đối tượng thuộc một lớp đã được ta định nghĩa (phân loại).
Thực thể (identity)


Thực thể hóa (instantiate) là quá trình khai báo để có một tên (có thể được xem như là một biến) trở thành một đối tượng từ một lớp nào đó.
Một lớp sau khi được tiến hành thực thể hóa để có một đối tượng cụ thể gọi là một thực thể. Hay nói ngược lại một thực thể là một đối tượng riêng lẽ của một lớp đã định trước. Như các biến thông thường, hai thực thể của cùng một lớp có thể có trạng thái nội tại khác nhau (xác định bởi các giá trị hiện có của các biến nội tại) và do đó hoàn toàn độc lập nhau nếu không có yêu cầu gì đặc biệt từ người lập trình.
Công cộng (public)


Công cộng là một tính chất được dùng để gán cho các phương thức, các biến nội tại, hay các lớp mà khi khai báo thì người lập trình đã cho phép các câu lệnh bên ngoài cũng như các đối tượng khác được phép dùng đến nó.

Thí dụ: Trong C++ khai báo public: int my_var; thì biến my_var có hai tính chất là tính công cộng và là một integer cả hai tính chất này hợp thành đặc tính của biến my_var khiến nó có thể được sử dụng hay thay đổi giá trị của nó (bởi các câu lệnh) ở mọi nơi bên ngoài lẫn bên trong của lớp.
Riêng tư (private)


Riêng tư là sự thể hiện tính chất đóng mạnh nhất (của một đặc tính hay một lớp). Khi dùng tính chất này gán cho một biến, một phương pháp thì biến hay phương pháp đó chỉ có thể được sử dụng bên trong của lớp mà chúng được định nghĩa. Mọi nỗ lực dùng trực tiếp đến chúng từ bên ngoài qua các câu lệnh hay từ các lớp con sẽ bị phủ nhận hay bị lỗi.
Bảo tồn (protected)


Tùy theo ngôn ngữ, sẽ có vài điểm nhỏ khác nhau về cách hiểu tính chất này. Nhìn chung đây là tính chất mà khi dùng để áp dụng cho các phương thức, các biến nội tại, hay các lớp thì chỉ có trong nội bộ của lớp đó hay các lớp con của nó (hay trong nội bộ một gói như trong Java) được phép gọi đến hay dùng đến các phương pháp, biến hay lớp đó.
So với tính chất riêng tư thì tính bảo tồn rộng rãi hơn về nghĩa chia sẻ dữ liệu hay chức năng. Nó cho phép một số trường hợp được dùng tới các đặc tính của một lớp (từ một lớp con chẳng hạn).
Lưu ý: Các tính chất cộng cộng, riêng tư và bảo tồn đôi khi còn được dùng để chỉ thị cho một lớp con cách thức kế thừa một lớp cha mẹ như trong C++.
Đa kế thừa (multiple inheritance)


Đây là một tính chất cho phép một lớp con có khả năng kế thừa trực tiếp cùng lúc nhiều lớp khác.
Vài điểm cần lưu ý khi viết mã dùng tính chất đa kế thừa:

  • Khi muốn có một sự kế thừa từ nhiều lớp phụ mẫu thì các lớp này cần phải độc lập và đặc biệt tên của các dữ liệu hay hàm cho phép kế thừa phải có tên khác nhau để tránh lỗi "ambiguity". Bởi vì lúc đó phần mềm chuyển dịch sẽ không thể xác định được là lớp con sẽ thừa kế tên nào của các lớp phụ mẫu.
  • Nhiều ngôn ngữ, ví dụ như Java, không có đa thừa kế, nhưng chúng có khái niệm giao diện Interface. Với Interface, ta có thể có hầu hết các lợi ích mà đa thừa kế mang lại.

Ngoài các khái niệm trên, tùy theo ngôn ngữ, có thể sẽ có các chức năng OOP riêng biệt được cấp thêm vào.
Về Đầu Trang Go down
https://funclass.forum-viet.net
caubenhu
Khách viếng thăm



Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại Empty
Bài gửiTiêu đề: Re: Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại   Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại I_icon_minitimeSun Mar 21, 2010 8:03 am

jì màc rắc rối vậy ,có giống CLB CTC ko
Về Đầu Trang Go down
motminhl
Khách viếng thăm



Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại Empty
Bài gửiTiêu đề: Re: Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại   Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại I_icon_minitimeSun Mar 21, 2010 8:04 am

nè thèng caubenhu jì mà giống CLB CTC cái này là hướng lập trình ,ngốc
Về Đầu Trang Go down
Sponsored content




Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại Empty
Bài gửiTiêu đề: Re: Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại   Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại I_icon_minitime

Về Đầu Trang Go down
 

Một số khái niệm cần biết trong ngôn ngữ OOP hiện đại

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 

 Similar topics

-
» NGÔN NGỮ LẬP TRÌNH
» Ngôn Ngữ Biểu Diễn Giải Thuật
» Can Gac Trong...........
» Hot girl Sam điệu đà trong gió xuân
» (Chuyện lặt vặt):Có trò vui chơi trong ngày cá tháng tư rùi!!!
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Funclass Forum | 122's Mini Forum :: Tin học :: Lập Trình Pascal-