Thứ Năm, 27 tháng 9, 2012

TÌnh Khúc Vàng




Tình Khúc Vàng


Anh nghe mùi hương trên tóc quen nồng nàn 
Anh nghe tình em nghe tình em chứa chan 
Anh nghe bàn tay trong bàn tay nhẹ nhàng, 
với người đời hé môi cười.... 

Anh nghe niềm vui trên phố đông rộn ràng, 
Anh nghe tình yêu bên tình yêu hát vang 
Anh nghe bờ vai bên bờ vai dịu dàng, 
ngỡ ngàng cùng ánh chiều sang. 

ĐK : 

Oh, oh.....Ngồi bên em cung đàn hát lên tình khúc vàng 
Bao nhiêu âu lo đời vụt tan 
Ngày mai xa nhau rồi, phút giây còn muôn lời 
Em ơi, bao nhiêu điều chưa nói?! 
Nhớ từng hàng cây, nhớ từng con phố 
bước theo em bâng khuâng hỡi tình say. 

Nhớ về dòng sông, ấm lòng màu đông 
Nụ hôn ta chơi vơi theo con sóng.... 
Gửi tình vào mây, gửi tình vào gió 
Có xa nhau xin đừng là tàn tro 
Muốn là dòng sông, lững lờ mùa đông 
Ôm em trong giấc mơ tình khúc vàng...

Thứ Hai, 24 tháng 9, 2012

Miền Trung Yêu Dấu

http://mp3.zing.vn/bai-hat/Mien-Trung-Yeu-Dau-Dan-Truong/IWZ9BIEI.html

Lâu lắm chưa về, thăm lại miền trung miền yêu dấu xưa, tìm lại nụ hôn năm nào đánh mất trong một chiều mưa, không biết bây chừ ai có còn nhớ đến tên nhau nhớ câu thề xưa hẹn hò trong mưa, ai đã quên rồi câu chuyện thần tiên ngày thơ rất xa, bỏ lại hàng dương xanh xao rủ bóng bên bờ phù sa, mây thắp mưa về dâng nỗi sầu, nơi chốn xa xôi cuối trời chân trời đó dấu yêu thuở nào, nhớ ai...ai đứng bên cầu, những khi tan trường bóng ngả hoang hôn ngâng ngơ chờ nhau, nhớ ai.. .hoa phượng rơi đầy lối xưa bây giờ chỉ riêng mình anh phượng ơi có hay, tiếng ve xao xuyến đêm hè lấn trong sương mờ trăng về nghiêng khắp nẻo đường quê, chốn xưa sương lạnh vai mềm, bởi em xa rồi chỉ riêng mình anh , lặng yên bóng đêm
hò...ơi...đêm nay gió về se lòng,có ai còn chúc duyên nồng cho nhau
hò...ơi....đêm nay anh về qua cầu bóng dương còn đó, nhưng người xưa ở đâu.

Thứ Sáu, 14 tháng 9, 2012

Những khái niệm cơ bản của lập trình hướng đối tượng – Phần 3

Những khái niệm cơ bản của lập trình hướng đối tượng – Phần 3

Về mục đích, Lớp và Cấu trúc đều có chung một mục đích ban đầu, đó là nhóm một tập hợp các dữ liệu lại với nhau để xử lí đồng bộ và thống nhất: Cấu trúc nhóm các dữ liệu hay phải đi kèm với nhau lại thành một nhóm cho dễ xử lí. Tương tự, Lớp là tập hợp một số thuộc tính chung của đối tượng để xử lí.
2/- So sánh lớp và cấu trúc Trong phần này, chúng ta sẽ tiến hành so sánh Class (Lớp) và Structure (Cấu trúc) trên nhiều khía cạnh khác nhau:
♦ Mức khái niệm
♦ Mục đích và chức năng
♦ Về ưu và nhược điểm
So sánh ở mức khái niệm
Ở mức khái niệm, Lớp và cấu trúc hoàn toàn khác nhau:
♦ Lớp là khái niệm chỉ có trong lập trình hướng đối tượng; nó được dùng để biểu diễn một tập các đối tượng tương tự nhau.
♦ Trong khi đó, Cấu trúc là khái niệm chỉ tồn tại trong lập trình cấu trúc, không phải là một khái niệm của lập trình hướng đối tượng. Vì trong lập trình hướng đối tượng, tất cả các thực thể đều được coi là một đối tượng, nghĩa là nó phải là một thể hiện cụ thể của một lớp nào đó. Do đó, trong lập trình hướng đối tượng, không có khái niệm Cấu trúc.
So sánh về mục đích và chức năng
Về mục đích, Lớp và Cấu trúc đều có chung một mục đích ban đầu, đó là nhóm một tập hợp các dữ liệu lại với nhau để xử lí đồng bộ và thống nhất: Cấu trúc nhóm các dữ liệu hay phải đi kèm với nhau lại thành một nhóm cho dễ xử lí. Tương tự, Lớp là tập hợp một số thuộc tính chung của đối tượng để xử lí.
Tuy nhiên, Lớp và Cấu trúc cũng có một số khác biệt trên khía cạnh này:
♦ Lớp ngoài mục đích nhóm các thuộc tính dữ liệu của đối tượng, còn nhóm các hoạt động của đối tượng thành các phương thức của Lớp.
♦ Trong khi đó, mặc dù cũng có thể cung cấp các hàm trong Cấu trúc, nhưng mục đích chính của Cấu trúc chỉ là nhóm dữ liệu thành cấu trúc cho dễ xử lí.
So sánh về ưu nhược điểm
Vì có cùng mục đích là nhóm các dữ liệu lại với nhau để xử lí, cho nên Lớp cà Cấu trúc có cùng ưu điểm là làm chương trình gọn gàng, xử lí đồng bộ và thống nhất.
Tuy nhiên, Lớp còn có một số ưu điểm mà Cấu trúc không có:
♦ Lớp có khả năng bảo vệ dữ liệu tránh bị truy nhập tự do từ bên ngoài. Các chương trình bên ngoài chỉ có thể truy nhập vào dữ liệu của đối tượng thông qua các phương thức do Lớp cung cấp, không thể tự do truy nhập. Trong khi đó, Cấu trúc mặc dầu đã nhóm dữ liệu với nhau nhưng không có khả năng bảo vệ dữ liệu: Các chương trình bên ngoài vẫn có thể truy nhập tự do vào các thành phần của Cấu trúc.
♦ Lớp có khả năng đóng gói để hạn chế tối đa thay đổi khi phải sửa lại mã chương trình. Khi có sự thay đổi, chỉ cần thay đổi mã của một phương thức, các chương trình bên ngoài sử dụng phương thức đó đều không phải thay đổi. Trong khi đó, nếu thay đổi một thành phần của Cấu trúc, ta phải thay đổi mã của tất cả các chương trình sử dụng thành phần đó của Cấu trúc.
♦ Lớp có thể được kế thừa bởi một Lớp khác, điều này làm tăng khả năng sử dụng lại mã nguồn của chương trình. Trong khi đó, Cấu trúc hoàn toàn không có cơ chế kế thừa, cho nên nhiều khi phải viết lại những đoạn mã giống nhau nhiều lần. Điều này vừa tốn công sức, vừa không an toàn khi có sự thay đổi một trong những đoạn mã giống nhau đó.
3/- Thành phần Private và Public của lớp Để bảo vệ dữ liệu tránh bị truy nhập tự do từ bên ngoài, lập trình hướng đối tượng sử dụng các từ khoá quy định phạm vi truy nhập các thuộc tính và phương thức của lớp. Một cách tổng quát, lập trình hướng đối tượng chia ra hai mức truy nhập các thành phần lớp:
Private: Truy nhập trong nội bộ lớp.
Protected: Thành phần được bảo vệ, được hạn chế truy nhập như thành phần private (sẽ được trình bày sau).
Public: Truy nhập tự do từ bên ngoài.
Thành phần private
Thành phần private là khu vực dành riêng cho lớp, không chia sẻ với bất kì lớp khác từ bên ngoài. Thành phần private chỉ cho phép truy nhập trong phạm vi nội bộ lớp: Từ phương thức vào các thuộc tính hoặc giữa các phương thức của lớp với nhau. Các thành phần private không thể truy nhập từ bên ngoài lớp, cũng như từ đối tượng khác.
Trong một lớp, thông thường các thành phần sau sẽ được đặt vào khu vực private của lớp:
♦ Tất cả các thuộc tính dữ liệu của lớp. Các thuộc tính dữ liệu của lớp được đặt vào vùng private nhằm bảo vệ chúng, tránh sự truy nhập tự do từ bên ngoài.
♦ Các phương thức trung gian, được sử dụng như các bước tính toán đệm cho các phương thức khác. Các phương thức trung gian được đặt vào vùng private để thực hiện việc đóng gói trong lập trình hướng đối tượng: Các đối tượng, chương trình bên ngoài không cần, và không thể biết cách tính toán cụ thể bên trong của lớp.
Thành phần public
Thành phần public là khu vực mà Lớp có thể chia sẻ với tất cả các chương trình và đối tượng bên ngoài. Thành phần public có thể được truy nhập từ bên trong lẫn bên ngoài lớp:
Bên trong lớp: từ phương thức lớp vào các thuộc tính dữ liệu của lớp, hoặc giữa các phương thức của lớp với nhau.
Bên ngoài lớp: Từ chương trình bên ngoài hoặc các đối tượng khác vào các phương thức của lớp.
Trong một lớp, thông thường các thành phần sau sẽ được đặt vào vùng chia sẻ public của lớp:
♦ Các phương thức để nhập/xem (set/get) các thuộc tính dữ liệu của lớp. Các phương thức này sẽ cho phép các đối tượng bên ngoài truy nhập vào các thuộc tính dữ liệu của lớp một cách gián tiếp.
♦ Các phương thức cung cấp chức năng hoạt động, cách cư xử của đối tượng đối với môi trường bên ngoài. Các phương thức này thể hiện chức năng của các đối tượng lớp.
4/- Một số ngôn ngữ lập trình hướng đối tượng Nội dung phần này sẽ trình bày một số ngôn ngữ lập trình hướng đối tượng thông dụng hiện nay:
♦ Ngôn ngữ lập trình C++
♦ Ngôn ngữ lập trình ASP.NET và C#.NET
♦ Ngôn ngữ lập trình Java
4.1/- C++
C++, ra đời vào giữa những năm 1980, là một ngôn ngữ lập trình hướng đối tượng được mở rộng từ ngôn ngữ lập trình cấu trúc C. Cho nên, C++ là ngôn ngữ lập trình nửa hướng đối tượng, nửa hướng cấu trúc.
Những đặc trưng hướng đối tượng của C++
♦ Cho phép định nghĩa lớp đối tượng.
♦ Cho phép đóng gói dữ liệu vào các lớp đối tượng. Cho phép định nghĩa phạm vi truy nhập dữ liệu của lớp bằng các từ khoá phạm vi.
♦ Cho phép kế thừa lớp với các kiểu kế thừa khác nhau tuỳ vào từ khoá dẫn xuất.
♦ Cho phép lớp kế thừa sử dụng các phương thức của lớp bị kế thừa (trong phạm vi quy định).
♦ Cho phép định nghĩa chồng phương thức trong lớp kế thừa.
Những vi phạm hướng đối tượng của C++
Những vi phạm này là do kết quả kế thừa từ ngôn ngữ C, một ngôn ngữ lập trình thuần cấu trúc.
♦ Cho phép định nghĩa và sử dụng các biến dữ liệu tự do.
♦ Cho phép định nghĩa và sử dụng các hàm tự do.
♦ Ngay cả khi dữ liệu được đóng gói vào lớp, dữ liệu vẫn có thể truy nhập trực tiếp như dữ liệu tự do bởi các hàm bạn, lớp bạn (friend) trong C++.
4.2/- ASP.NET và C++.NET
Các ngôn ngữ lập trình .NET (còn được gọi là .NET Frameworks) của MicroSoft ra đời vào cuối những năm 1990 để cạnh tranh với ngôn ngữ lập trình Java. .NET là một ngôn ngữ hoàn toàn hướng đối tượng, hơn nữa, nó còn cung cấp một giao diện lập trình đồ hoạ thân thiện và đẹp mắt với truyền thống lập trình kéo thả của MicroSoft.
Một số đặc điểm của ngôn ngữ .NET:
♦ Là một ngôn ngữ hoàn toàn hướng đối tượng: Tất cả các thành phần, các thực thể trong chương trình đều được mô hình dưới dạng một lớp nhất định. Không có dữ liệu tự do và hàm tự do trong chương trình.
♦ Cung cấp giao diện lập trình đồ hoạ: lập trình viên chỉ cần kéo và thả các đối tượng đồ hoạ cho ứng dụng của mình.
♦ Cho phép lập trình viên tự tạo ra các thư viện UserControl của mình. Đây là một thư viện bao gồm các thành phần được người dùng tự thiết kế giao diện, viết mã nguồn, đóng gói và có thể sử dụng lại trong nhiều ứng dụng khác nhau, tuỳ theo chức năng của các thành phần.
4.3/- Java
Java là một ngôn ngữ lập trình được Sun Microsystems giới thiệu vào tháng 6 năm 1995. Java được xây dựng trên nền tảng của C và C++: Java sử dụng cú pháp của C và đặc trưng hướng đối tượng của C++.
Một số đặc điểm của Java:
♦ Java là một ngôn ngữ lập trình hoàn toàn hướng đối tượng: Tất cả các thực thể đều được coi là một đối tượng, là một thể hiện cụ thể của một lớp xác định. Không có dữ liệu tự do và hàm tự do trong Java, tất cả đều được đóng gói vào các lớp xác định.
♦ Java là ngôn ngữ vừa biên dịch vừa thông dịch. Đầu tiên mã nguồn được biên dịch thành dạng bytecode; sau đó được thực thi trên từng loại máy nhờ trình thông dịch. Điều này tạo ra khả năng hoạt động độc lập với nền tảng phần cứng của các ứng dụng Java.
♦ Java cho phép người dùng tự tạo các đối tượng thư viện JavaBeans của mình (tương tự như các thành phần UserControl của .NET). Các đối tượng Bean sẽ được sử dụng lại như các thành phần có sẵn trong các ứng dụng khác. Điều này mở ra khả năng to lớn để tiết kiệm công sức viết mã nguồn và khả năng xây dựng các kỹ thuật cho một nền công nghiệp lắp ráp phần mềm.
Ngôn ngữ lập trình hướng đối tượng Java sẽ được trình bày chi tiết trong toàn bộ phần 2 của giáo trình này.
Hết 
nguồn :http://www.thuvien-it.net

Những khái niệm cơ bản của lập trình hướng đối tượng – Phần 2

Những khái niệm cơ bản của lập trình hướng đối tượng – Phần 2

Trừu tượng hoá đối tượng theo dữ liệu chính là quá trình mô hình hoá các thuộc tính của lớp dựa trên các thuộc tính của các đối tượng tương ứng. Quá trình này được tiến hành như sau:
1.4/- Trừu tượng hóa đối tượng theo dữ liệu
♦ Tập hợp tất cả các thuộc tính có thể có của các đối tượng.
♦ Nhóm các đối tượng có các thuộc tính tương tự nhau, loại bỏ bớt các thuộc tính cá biệt, tạo thành một nhóm chung.
♦ Mỗi nhóm đối tượng đề xuất một lớp tương ứng.
♦ Các thuộc tính chung của nhóm đối tượng sẽ cấu thành các thuộc tính tương ứng của lớp được đề xuất.
Ví dụ, trong bài toán quản lí cửa hàng bán ô tô. Mỗi ô tô có mặt trong của hàng là một đối tượng. Mặc dù mỗi chiếc xe có một số đặc điểm khác nhau về nhãn hiệu, giá xe, màu sắc… nhưng có chung các thuộc tính của một chiếc xe ô tô là:
♦ Các xe đều có nhãn hiệu.
♦ Các xe đều có màu sắc.
♦ Các xe đều có giá bán.
♦ Các xe đều có công suất động cơ.
Ngoài ra, một số ít xe có thể có thêm các thuộc tính:
♦ Có xe có thể có dàn nghe nhạc.
♦ Có xe có thể có màn hình xem ti vi.
♦ Có xe có lắp kính chống nắng, chống đạn…
Tuy nhiên, đây là các thuộc tính cá biệt của một số đối tượng xe, nên không được đề xuất thành thuộc tính của lớp ô tô. Do đó, ta mô hình lớp ô tô với các thuộc tính chung nhất của các ô tô.

Ưu điểm của việc trừu tượng hóa
Những ưu điểm của việc trừu tượng hóa là:
♦ Tập trung vào vấn đề cần quan tâm.
♦ Xác định những đặc tính thiết yếu và những hành động cần thiết.
♦ Giảm thiểu những chi tiết không cần thiết.
Việc trừu tượng hóa dữ liệu là cần thiết, bởi vì không thể mô tả tất cả các hành động và các thuộc tính của một thực thể. Vấn đề mấu chốt là tập trung đến những hành vi cốt yếu và áp dụng chúng trong ứng dụng.
1.5/- Khái niệm kế thừa
Xét trường hợp bài toán quản lí nhân sự và sinh viên của một trường đại học. Khi đó, ta có hai lớp đối tượng chính là lớp Nhân viên và lớp Sinh viên:

Ta nhận thấy rằng hai lớp này có một số thuộc tính và phương thức chung: tên, ngày sinh, giới tính. Tuy nhiên, không thể loại bỏ các thuộc tính cá biệt để gộp chúng thành một lớp duy nhất, vì các thuộc tính lương nhân viên và lớp của sinh viên là cần thiết cho việc quản lí. Vấn đề nảy sinh như sau:
♦ Ta phải viết mã trùng nhau đến hai lần cho các phương thức: nhập/xem tên, nhập/xem ngày sinh, nhập/xem giới tính. Rõ rang điều này rất tốn công sức.
♦ Nếu khi có sự thay đổi về kiểu dữ liệu, chẳng hạn kiểu ngày sinh được quản lí trong hệ thống, ta phải sửa lại chương trình hai lần.
Để tránh rắc rối do các vấn đề nảy sinh như vậy, lập trình hướng đối tượng sử dụng kỹ thuật kế thừa nhằm nhóm các phần giống nhau của các lớp thành một lớp mới, sau đó cho các lớp ban đầu kế thừa lại lớp được tạo ra. Như vậy, mỗi lớp thừa kế (lớp dẫn xuất, lớp con) đều có các thuộc tính và phương thức của lớp bị thừa kế (lớp cơ sở, lớp cha).
Quay lại với bài toán quản lí trường đại học, các thuộc tính và phương thức chung giứa lớp Nhân viên và lớp Sinh viên là:
♦ Tên,
♦ Ngày sinh,
♦ Giới tính,
♦ Nhập/xem tên,
♦ Nhập/xem ngày sinh
♦ Nhập/xem giới tính.
Ta tách phần chung này thành một lớp ở mức trừu tượng cao hơn, lớp Người. Lớp Người sẽ làm lớp cha của lớp Nhân viên và lớp Sinh viên. Khi đó, các lớp trở thành:

Như vậy, sự kế thừa trong lập trình hướng đối tượng:
♦ Cho phép lớp dẫn xuất có thể sử dụng các thuộc tính và phương thức của lớp cơ sở tương tự như sử dụng các thuộc tính và phương thức của mình.
♦Cho phép việc chỉ cần cài đặt phương thức ở một lớp cơ sở, mà có thể sử dụng được ở tất cả các lớp dẫn xuất.
♦ Cho phép tránh sự cài đặt trùng lặp mã nguồn của chương trình.
♦ Cho phép chỉ phải thay đổi một lần khi cần phải thay đổi dữ liệu của các lớp.
1.5/- Khái niệnm đóg gói
Xét ví dụ bài toán quản lí nhân viên văn phòng với lớp Nhân viên như sau:

Khi đó, cách tính lương cho nhân viên là khác nhau đối với mỗi người:
= * *
Trong đó, tỉ lệ phần trăm là khác nhau cho mỗi phòng ban, ví dụ:
♦ Phòng kế hoạch là 105%
♦ Phòng hành chính là 100%
♦ Phòng nhân sự là 110%
Khi đó, tuỳ vào thuộc tính phòng ban khác nhau mà ta phải dùng công thức tỉ lệ khác nhau để tính lương cho mỗi nhân viên.
Tuy nhiên, cách tính cụ thể này là công việc bên trong của phương thức tính tiền lương của lớp Nhân viên. Với mỗi ứng dụng, khi tạo một đối tượng cụ thể của lớp nhân viên, ta chỉ cần truyền các tham số thuộc tính cho đối tượng, sau đó gọi phương thức tính tiền lương cho đối tượng nhân viên đó, ta sẽ biết được tiền lương của nhân viên. Cách gọi phương thức tính tiền lương là hoàn toàn giống nhau cho tất cả các đối tượng nhân viên của văn phòng.
Sự giống nhau về cách sử dụng phương thức cho các đối tượng của cùng một lớp, mặc dù bên trong phương thức có các cách tính toán khác nhau với các đối tương khác nhau, được gọi là tính đóng gói dữ liệu của lập trình hướng đối tượng. Như vậy, tính đóng gói dữ liệu của lập trình hướng đối tượng:
♦ Cho phép che dấu sự cài đặt chi tiết bên trong của phương thức. Khi sử dụng chỉ cần gọi các phương thức theo một cách thống nhất, mặc dù các phương thức có thể được cài đặt khác nhau cho các trường hợp khác nhau.
♦ Cho phép che dấu dữ liệu bên trong của đối tượng. Khi sử dụng, ta không biết được thực sự bên trong đối tượng có những gì, ta chỉ thấy được những gì đối tượng cho phép truy nhập vào.
♦ Cho phép hạn chế tối đa việc sửa lại mã chương trình. Khi phải thay đổi công thức tính toán của một phương thức, ta chỉ cần thay đổi mã bên trong của phương thức, mà không phải thay đổi các chương trình gọi đến phương thức bị thay đổi.
1.7/- Khái niệm đa hình
Trở lại với ví dụ về quản lí trường đại học, với hai lớp Nhân viên và lớp Sinh viên, đều kế thừa từ lớp Người. Khi đó, ta thêm vào mỗi lớp một phương thức show():
♦ Phương thức show của lớp Người sẽ giới thiệu tên và tuổi của người đó.
♦ Phương thức show của lớp Nhân viên sẽ giới thiệu nhân viên đó có tiền lương là bao nhiêu.
♦ Phương thức show của lớp Sinh viên sẽ giới thiệu là sinh viên đó đang học ở lớp nào.

Khi đó, nếu trong hệ thống có các đối tượng cụ thể tương ứng với ba lớp, thì:
♦ Khi ta gọi hàm show từ đối tượng của lớp Người, sẽ nhận được tên và tuổi của người đó.
♦ Khi ta gọi phương thức show từ đối tượng của lớp Nhân viên, sẽ nhận được số tiền lương của nhân viên đó.
♦ Khi ta gọi phương thức show từ đối tượng của lớp Sinh viên, ta sẽ biết được lớp học của sinh viên đó.
Việc chỉ cần gọi cùng một phương thức, nhưng từ các đối tượng khác nhau, sẽ cho kế quả khác nhau được gọi là tính đa hình trong lập trình hướng đối tượng. Như vậy, tính đa hình trong lập trình hướng đối tượng:
♦ Cho phép các lớp được định nghĩa các phương thức trùng nhau: cùng tên, cùng số lượng và kiểu tham số, cùng kiểu trả về. Việc định nghĩa phương thức trùng nhau của các lớp kế thừa nhau còn được gọi là sự nạp chồng phương thức.
♦ Khi gọi các phương thức trùng tên, dựa vào đối tượng đang gọi mà chương trình sẽ thực hiện phương thức của lớp tương ứng, và do đó, sẽ cho các kết quả khác nhau.
Hết phần 2
Nguồn : 
 http://www.thuvien-it.net

Lập trình hướng đối tượng - Phần 1

Lập trình hướng đối tượng - Phần 1

Lớp kế thừa
Tư tưởng chính của lập trình hướng đối tượng là xây dựng một chương trình dựa trên sự phối hợp hoạt động của các đối tượng. Một đối tượng bao gồm hai thành phần chính là thông tin lưu trữ và các thao tác xử lý.
Trong thế giới thực, đối tượng là thực thể tồn tại như con người, xe, máy tính, … Trong ngôn ngữ lập trình, đối tượng có thể là màn hình, điều khiển, …
Lập trình hướng đối tượng là kỹ thuật lập trình nhằm vào sự tương tác giữa các đối tượng. Mỗi đối tượng có những thuộc tính (thông tin lưu trữ), những phương thức xác định các chức năng của đối tượng. Bên cạnh đó, đối tượng cũng có khả năng phát sinh các sự kiện khi thay đổi thông tin, thực hiện một chức năng hay khi đối tượng khác tác động vào. Tất cả những thuộc tính, phương thức và sự kiện tạo nên cấu trúc của đối tượng. Có 4 ý niệm trong lập trình hướng đối tượng :
- Abstraction : tính trừu tượng.
- Encapsulation : tính đóng gói.
- Inheritance : tính kế thừa.
- Polymorphism : tính đa hình.
Mỗi ý niệm đều có vai trò quan trọng trong lập trình hình đối tượng.

1/- Tính trừu tượng

Bạn thường lẫn lộn giữa lớp (Class) và đối tượng (Object). Cần phân biệt lớp là một ý niệm trừu tượng, còn đối tượng là một thể hiện cụ thể của lớp.
Ví dụ : bản thiết kế nhà là lớp, ngôi nhà được xây dựng dựa trên bản thiết kế là đối tượng.
Từ những đối tượng giống nhau, bạn có thể trừu tượng hóa thành một lớp.
Tính trừu tượng cho phép bạn loại bỏ tính chất phức tạp của đối tượng bằng cách chỉ đưa ra các thuộc tính và phương thức cần thiết của đối tượng trong lập trình.

2/- Tính đóng gói

Mỗi lớp được xây dựng để thực hiện một nhóm chức năng đặc trưng riêng của lớp, trong trường hợp một đối tượng thuộc lớp cần thực hiện một chức năng không nằm trong khả năng vì chức năng đó thuộc về một đối tượng thuộc lớp khác, thì nó sẽ yêu cầu đối tượng đó đảm nhận thực hiện công việc. Một điểm quan trọng trong cách gia tiếp giữa các đối tượng là một đối tượng sẽ không được truy xuất trực tiếp vào thành phần dữ liệu của đối tượng khác cũng như không đưa thành phần dữ liệu của mình cho đối tượng khác một cách trực tiếp. Tất cả mọi thao tác truy xuất vào thành phần dữ liệu từ đối tượng này qua đối tượng khác phải được thực hiện bởi các phương thức (method) của chính đối tượng chứa dữ liệu. Đây cũng chính là một tính chất quan trọng trong lập trình hướng đối tượng gọi là tính đóng gói (encapsulation<) dữ liệu.
Tính đóng gói cho phép dấu thông tin của đối tượng bằng cách kết hợp thông tin và các phương thức liên quan đến thông tin trong đối tượng.
Ví dụ :
Xe hơi có các chức năng (phương thức phô diễn bên ngoài) như Ngừng, Chạy tới, Chạy lùi. Đây là những gì cần thiết cho Tài xế tương tác với Xe hơi. Xe hơi có thể có một đối tượng Động cơ nhưng Tài xế không cần phải quan tâm. Tất cả những gì cần quan tâm là những chức năng để có thể vận hành xe. Do đó, khi thay một Động cơ khác, Tài xế vẫn sử dụng các chức năng cũ để vận hành Xe hơi bao lâu các chức năng (phương thức) đưa ra bên ngoài (Interface) không bị thay đổi.

3/- Tính kế thừa

Tính kế thừa là khả năng cho phép ta xây dựng một lớp mới dựa trên các định nghĩa của một lớp đã có. Lớp đã có gọi là lớp Cha, lớp mới phát sinh gọi là lớp Con và đương nhiên kế thừa tất cả các thành phần của lớp Cha, có thể mở rộng công năng các thành phần kế thừa cũng như bổ sung thêm các thành phần mới.
Bạn phân biệt hai loại quan hệ :
Là – một
Biểu thị tính kế thừa. Trong quan hệ "là – một", một đối tượng của lớp Con được xem như là một đối tượng của lớp Cha.

Lớp kế thừa
Ví dụ :
Từ lớp Xe bạn tạo nên lớp Xe hơi mở rộng, lớp này mặc nhiên kế thừa tất cả các thành phần của lớp xe. Bạn có thể nói một xe hơi là một chiếc xe.
Có – một
Quan hệ này mang ý nghĩa gồm có. Trong quan hệ "có – một", một đối tượng có thể có một hoặc nhiều thành phần tham chiếu đến các đối tượng khác.
Ví dụ :
Trong mô hình xe hơi, bạn muốn diễn tả ý tưởng chiếc xe "có – một" tay lái. Bạn không thể phát sinh lớp Xe hơi từ một Tay lái hay ngược lại (một Xe hơi là một Tay lái). Thay vì vậy, bạn phải có hai lớp độc lập làm việc với nhau trong đó, lớp phía ngoài (lớp Xe hơi) sẽ tạo và đưa ra công năng của lớp phía trong (lớp Tay lái).

4/- Tính đa hình

Tính đa hình là khả năng một ngôn ngữ xử lý các đối tượng hữu quan theo cùng một cách.
Tính đa hình thể hiện dưới nhiều hình thức :
Kết nối trễ - Late Binding
Là khả năng cho phép người lập trình gọi trước một phương thức của đối tượng, tuy chưa xác định đối tượng có phương thức muốn gọi hay không. Đến khi thực hiện, chương trình mới xác định được đối tượng và gọi phương thức tương ứng của đối tượng đó. Kết nối trễ giúp chương trình được uyển chuyển hơn, chỉ yêu cầu đối tượng cung cấp đúng phương thức cần thiết là đủ.
Ví dụ :
Bạn có lớp Xe với phương thức Chạy và các lớp Xe đạp, Xe hơi, Xe đẩy cùng phát sinh từ lớp Xe. Bạn chưa biết sẽ sử dụng xe gì đề di chuyển vù tùy thuộc tình hình có sẵn xe nào nên gọi trước phương thức Chạy. Khi chương trình thực thi, tùy theo đối tượng của lớp nào được đưa ra mà phương thức Chạy của đối tượng đó được gọi.
Nạp chồng – Overloading Đây là khả năng cho phép một lớp có nhiều thuộc tính, phương thức cùng tên nhưng với các tham số khác nhau về loại cũng như về số lượng. Khi được gọi, dựa vào tham số truyền vào, phương thức tương ứng sẽ được thực hiện.
Ghi chồng – Overriding
Hình thức này áp dụng cho lớp Con đối với lớp Cha. Lớp Con được phép có một phương thức cùng tên, cùng số tham số có kiểu dữ liệu như phương thức của lớp Cha hoặc những lớp trước đó nữa (lớp phát sinh ra lớp Cha …) với cài đặt khác đi. Lúc thực thi, nếu lớp Con không có phương thức riêng, phương thức của lớp Cha sẽ được gọi, ngược lại nếu có, phương thức của lớp Con được gọi.
Còn tiếp
nguồn : http://www.thuvien-it.net.

Thứ Bảy, 8 tháng 9, 2012

Thái Độ Tốt Là Chìa Khóa Thành Công Cho Những Tài Năng Trẻ

Thái Độ Tốt Là Chìa Khóa Thành Công Cho Những Tài Năng Trẻ
 
Tác giả: Michael Crom
Phó chủ tịch điều hành, Tổ chức Dale Carnegie ®
Hỏi: Tôi vừa mới nhận được công việc đầu tiên khoảng một tháng nay. Tôi muốn tạo ấn tượng tốt và kết hợp ăn ý với mọi người. Trong số các đồng nghiệp, tôi thấy có nhiều người lớn tuổi và giàu kinh nghiệm, vì vậy, tôi sợ họ nghĩ tôi chỉ là một đứa trẻ. Làm cách nào để tôi có thể chứng minh mình đủ kiến thức và có thể đảm nhận công việc một cách nghiêm túc? Xin chuyên viên cho tôi vài lời khuyên.
Đáp: Chúc mừng bạn đã có được một công việc mới. Tạo ấn tượng tốt với đồng nghiệp là một việc làm hết sức quan trọng nhằm tạo dựng tính trách nhiệm và vị thế của bạn trong công ty. Hãy nhớ rằng, để tạo dựng lòng tin luôn cần phải có thời gian.
Dưới đây là một vài lời khuyên để trở thành một chuyên viên trẻ tuổi, tài giỏi:
 Có thái độ tích cực:
Không phải ai cũng có thể nhận được các dự án có tính kích thích như họ mong đợi. Luôn giữ thái độ lạc quan và chứng tỏ bạn có khả năng đảm nhận nhiều dự án có tính thử thách và thú vị hơn.
 Ăn mặc phù hợp:
Nhớ rằng bạn không phải đang ở trường đại học hay một quán bar. Hãy luôn ăn mặc phù hợp với môi trường làm việc.
 Nếu bạn không biết điều gìđừng ngại hỏi:
Thà mất một ít thời gian để làm sáng tỏ việc gì còn hơn là mắc sai lầm và phải làm lại từ đầu.
 Nhận sai:
Che đậy cho những sai lầm không phải là một việc tốt. Hãy cho sếp của bạn biết, bởi vì đó có thể là một sai lầm tai hại.
 Lắng nghe:
Chú ý lắng nghe giúp bạn tiếp thu được những kinh nghiệm tốt nhất.
 Sự tự tin và năng lực đảm nhận dự án:
Nếu bạn không biết đáp án của một việc gì, hãy nói “Tôi không biết, nhưng tôi sẽ tìm ra lời giải“. Nhưng hãy chắc chắn bạn sẽ tìm ra hoặc luôn theo đuổi câu trả lời.

Năm Điều Về Quản Lý Thời Gian Hiệu quả

Năm Điều Về Quản Lý Thời Gian Hiệu quả
 
 
 
Hầu hết mọi người đều biết đôi điều về quản lý thời gian, những việc như sự khác biệt giữa quản lý cấp trung và quản lý cấp cao và sự khác biệt giữa có thời gian quản lý một dự án và mười dự án. Hầu hết chúng ta mỗi ngày đều lãng phí thời gian và không phát triển các kỹ năng quản lý hiệu quả để hoàn thành công việc theo đúng lịch hoặc hoàn thành trước lịch làm việc. Trong môi trường làm việc hiện nay, việc ai đó nói rằng họ không làm kịp công việc hay đến dự cuộc họp muộn là chuyện bình thường. Bên dưới là nằm điều về quản lý thời gian có thể giúp bạn theo kịp tiến độ.
1.      Một giờ lên kế hoạch sẽ giúp bạn tiết kiệm mười giờ làm việc:
Đừng nhào đầu vào các dự án lớn mà không đề ra các mục tiêu, cách thức đạt các mục tiêu đó và quan trọng nhất là định ra thời gian cần phải hoàn thành trước đó. Điều này sẽ giúp bạn tiết kiệm rất nhiều thời gian khi quyết định điểm nào sẽ làm dự án kéo dài lâu hơn.
2.      Hãy sử dụng danh sách những việc cần làm:
70% doanh nhân và người làm việc chuyên nghiệp đều sử dụng để theo đúng tiến độ. Nó giúp ích rất nhiều nếu bạn muốn biết cần phải làm gì tiếp theo khi đã hoàn thành xong một bước, đặc biệt nếu các bước đó không liên hệ với nhau hoặc chỉ là một phần của dự án. Hầu hết chúng ta đều làm nhiều việc cùng một lúc. Hãy có trách nhiệm với một việc, đó là danh sách công việc.
3.      Một dự án thường được phân bổ ra thành từng khoảng thời gian:
Nếu bạn chỉ đưa vào danh sách một việc duy nhất thì có thể cả ngày đó bạn chỉ làm được một việc. Nếu bạn bổ sung một việc khác vào danh sách trước ngày, bạn có thể hoàn cả hai việc. Nếu bạn đưa 6 hoặc 7 việc vào danh sách thì bạn vẫn có thể hoàn thành chúng trong ngày, đó là một sự cải thiện rất lớn đối với một việc mà trước đây bạn định hoàn tất.
4.      Hãy tham dự khóa học đọc nhanh:
Tốc độ đọc trung bình là 200 từ một phút. Hầu hết mọi người đều phải đọc ít 2 giờ mỗi ngày. Một khóa học luyện đọc nhanh có thể làm tăng gấp đôi tốc đọc của bạn. Điều giúp bạn có thêm thời gian đề làm những việc có năng suất khác.
5.      Dành ra một giờ để tự cải thiện bản thân:
Nếu bạn dành đủ 1 giờ trong ngày cho lĩnh vực mình muốn cải thiện, có nghĩa là mỗi tuần bạn sẽ mất 7 giờ (gần một ngày làm việc) và 365 giờ một năm (hơn 2 tuần liên tục không ngủ), thì bạn có thể trở nên thành thạo thậm chí là thông hiểu hết lĩnh vực mà bạn muốn cải thiện.
Cần nhớ rằng quản lý thời gian không chỉ đơn giản là làm mọi việc nhanh hơn mà còn là làm mọi việc đúng ngay từ đầu.


Hạnh phúc là hành trình chứ không phải điểm đến

Hạnh phúc là hành trình chứ không phải điểm đến

Chúng ta thường cho rằng cuộc sống sẽ tốt đẹp và có ý nghĩa hơn một khi chúng ta lập gia đình, sinh con… Sau đó chúng ta vỡ mộng vì con cái còn quá nhỏ, và tự nhủ rằng mọi việc sẽ tốt đẹp hơn một khi chúng lớn khôn. Và chúng ta lại thất vọng khi con cái của mình đến tuổi niên thiếu, vì chúng ta lại phải chăm sóc và lo lắng cho chúng. Chắc chắn chúng ta sẽ hạnh phúc hơn khi các con trưởng thành. Chúng ta lại tự nhủ cuộc sống rồi sẽ tốt đẹp một khi gia đình được ổn định, khi chúng ta tậu được một chiếc xe đẹp hơn, khi chúng ta đi nghỉ hè thoải mái, và cuối cùng là khi chúng ta được về hưu. Sự thật là không có một thời điểm nào tốt đẹp và hạnh phúc bằng hiện tại cả. Nếu không đúng, vậy thời điểm nào là hạnh phúc nhất? Cuộc sống của bạn luôn bị quay cuồng bởi các thách thức, các đòi hỏi vá các nhu cầu.
Tốt nhất bạn nên nhận ra rằng hiện tại là thời gian hạnh phúc nhất của mình, mặc dù cuộc sống đầy rẫy khó khăn và muộn phiền. Một thời gian rất dài, tôi cứ ngỡ rằng cuộc đời của mình sắp bắt đầu. Một cuộc đời, một cuộc sống thật sự. Nhưng lúc nào cũng có nhiều việc xảy đến, một thử thách phải vượt qua, vài công việc phải hòan tất, vài việc khác cần phải để tâm, còn vài hóa đơn phải thanh toán. Sau đó thì cuộc sống sẽ bắt đầu…
Cuối cùng tôi mới khám phá ra, chính những sự việc ấy là một phần đời sống của mình.
Từ cái nhìn này, tôi nghiệm được rằng không có con đường nào đi đến hạnh phúc cả.
Hạnh phúc chính là con đường chúng ta đang đi.
Do đó hãy quý và hưởng mọi phút giây.
Không nên chờ đợi nữa. Không chờ đợi ngày tốt nghiệp ra trường, chờ đợi ngày trở lại trường, chờ đợi xuống bớt vài ký, lên thêm vài ký, chờ đợi việc làm mới, chờ đợi ngày kết hôn, mong đợi đến tối thứ Sáu, sáng Chủ nhật, một chiếc xe mới, đợi trả nợ xong, trông chờ Xuân đến, Hạ về, đợi đến đầu tháng, cuối tháng, đợi nghe bản nhạc hay trong radio, chờ ngày từ giã cõi đời, ngày tái sinh… trước khi quyết định sống thật hạnh phúc.
Hạnh phúc là hành trình chứ không phải điểm đến.
Không có một giờ phút nào quý cho bằng hiện tại.
Hãy sống và tận hưởng từng giây phút.
Chúng ta hãy suy nghĩ và cố gắng trả lời các câu hỏi sau đây:
Bạn hãy nêu tên của 5 người giàu nhất thế giới.
Tên của 5 hoa hậu thế giới.
Tên của 10 người lãnh giải Nobel gần đây nhất.
Tên của 10 người lãnh giải Oscar gần đây nhất.
Bạn không trả lời được?
Không sao cả, ít ai có thể nhớ những điều này.
Bởi, các tràng pháo tay rồi cũng chấm dứt.
Các giải thưởng cũng sẽ đóng bụi.
Các quán quân hoặc người thắng cuộc rồi cũng sẽ bị quên lãng.
Chúng ta lại thử trả lời các câu sau đây:
Bạn hãy nêu tên 3 vị thầy cô đáng kính trong cuộc đời mình.
Tên 3 người quen đã từng giúp bạn trong những giây phút khó khăn nhất.
Hãy nghĩ đến vài người đã từng cho bạn những cảm giác đặc biệt.
Và 5 người mà bạn lúc nào cũng muốn gần gũi.
Các câu này có vẻ dễ trả lời hơn, phải không bạn?
Những người có ý nghĩa đặc biệt trong cuộc sống của bạn, không phải là những người giỏi nhất, cũng không là những người giàu nhất, và họ cũng không đạt được một giải thưởng quốc tế nào.
Họ chỉ là những người nghĩ đến bạn, lo lắng cho bạn và luôn ở bên cạnh bạn khi bạn cần đến.
Hãy suy nghĩ về đều này.
Cuộc sống rất là ngắn ngủi.
Và bạn đứng trong danh sách nào của tôi? Bạn có biết không?
Hãy cho tôi nắm lấy tay bạn.
Bạn là một trong những người “nổi tiếng” nhất trong danh sách của tôi, mà tôi đã không quên để gửi đến bạn thông điệp này.
Cách đây rất lâu, ở một cuộc thi Thế vận hội dành cho những người tàn tật ở Seattle, có 9 vận động viên tham gia cuộc thi chạy 100 mét, và tất cả đều muốn thắng cuộc đua.
tiếng súng nổ báo hiệu cuộc thi bắt đầu. Tất cả mọi người bắt đầu chạy, nhưng có một thanh niên bị trượt chân ngã quỵ xuống, và cậu ta bật khóc.
Tám người kia nghe tiếng khóc, họ chạy chậm đi và quay đầu nhìn.
Cuối cùng họ ngừng chạy và quay trở lại cả 08 người.
Một cô gái ngồi xuống ân cần hỏi chàng thanh niên bị trượt té: “Đã thấy đỡ chưa?”.
Sau đó cả 09 người sánh vai cùng nhau bước đến lằn mức trắng.
Tất cả khán giả đều đứng lên đồng loạt vỗ tay. Và trang vỗ tay đã kéo dài rất lâu.
Tất cả mọi người chứng kiến sự việc hôm đó, thường kể lại chuyện này cho người khác nghe. Tại sao vậy?
Vì tận cùng trong thâm tâm của chúng ta đều hiểu rằng, điều quan trọng nhất trong cuộc sống không phải là thắng cuộc.
Điều quan trọng nhất trong cuộc sống là giúp người khác thắng. mặc dù việc này có thể làm chậm công việc của chúng ta hoặc thay đổi kết quả cuộc thi đua.
Nếu bạn phổ biến thông điệp này, có thể chúng ta sẽ thành công trong việc thay đổi trái tim của chúng ta, và luôn cả trái tim của người khác nữa.
“ Một ngọn nến sẽ không bị mất giá trị khi nó được dùng để mang ánh sáng đến cho người khác”.
Thế nào, bạn đã quyết định chưa? Vứt bỏ nó đi, hay tiếp tục gửi thông điệp này đến cho người khác?
[Sưu tầm]

Để bắt đầu một cuộc sống hạnh phúc

Để bắt đầu một cuộc sống hạnh phúc
Bạn có định nghĩa "Hạnh phúc" quá xa vời? Hạnh phúc chỉ là những điều thật nhỏ mà chúng ta có thể làm mỗi ngày để tận hưởng một cuộc sống thật hạnh phúc và giải tỏa hết những căng thẳng mệt mỏi.
1. Đi bộ từ 10 đến 30 phút hàng ngày. Và trong khi bạn đi bộ hãy mỉm cười.

2. Ngồi trong yên lặng ít nhất 10 phút mỗi ngày.

3. Ngủ đủ 8 tiếng một ngày.

4. Nguyên tắc sống với: Hoạt động tích cực, hăng hái nhiệt tình và sự đồng cảm.

5. Chơi thể thao nhiều hơn nữa.

6. Đọc nhiều sách hơn bạn đã làm trong tháng trước.

7. Thực hành phương pháp ngồi thiền, tập yoga và cầu nguyện.

8. Dành thời gian cho ông bà, bố mẹ, những người trên 70 tuổi và trẻ con dưới 6 tuổi.

9. Ước mơ nhiều hơn khi bạn đang tỉnh táo.

10. Ăn nhiều rau xanh và hoa quả tươi, hạn chế ăn những thực phẩm đã chế biến sẵn.

11. Uống nhiều nước.

12. Cố gắng làm cho ít nhất 3 người cười mỗi ngày.

13. Không lãng phí năng lượng quý giá cho việc buôn bán tầm phào.

14. Quên các vấn đề của quá khứ đi. Cũng đừng nhắc đi nhắc lại những lỗi lầm của bạn đời trong quá khứ.

15. Không suy nghĩ đến những vấn đề tiêu cực hoặc những thứ bạn không thể kiểm soát. Thay vào đó hãy đầu tư sức lực vào những vấn đề tích cực hiện tại.

16. Cuộc sống chỉ là một trường học và bạn đang ở đây để học hỏi. Các vấn đề khó khăn chỉ đơn giản là một phần của chương trình học xuất hiện bây giờ rồi sẽ biến mất dần đi như môn đại số nhưng những bài học mà bạn đã học sẽ dùng cho cả đời.

17. Buổi sáng ăn cho mình, buổi trưa ăn cho bạn và buổi tối ăn cho kẻ thù. Chính vì vậy bữa sáng là quan trọng nhất.

18. Mỉm cười và cười nhiều hơn nữa.

19. Cuộc sống không quá dài để bạn lãng phí thời gian ghét bất kỳ ai. Vì vậy hãy loại bỏ những cảm giác đau khổ và ghen ghét đi nhé.

20. Đừng quá nghiêm khắc với bản thân. Không ai hoàn hảo cả đâu.

21. Bạn không cần phải thắng cuộc trong tất cả các cuộc tranh luận đâu. Hòa thuận là hơn cả.

22. Tạo bình yên trong quá khứ để không phá hỏng hạnh phúc của hiện tại.

23. Đừng so sánh cuộc sống của bạn với người khác. Và cũng đừng so sánh người bạn đời của mình với người khác bạn nhé.

24. Không ai nắm giữ hạnh phúc của bạn ngoài bạn cả.

25. Tha thứ cho mọi người về tất cả mọi thứ.

26. Đừng bận tâm về những điều người khác nghĩ về bạn.

27. Thời gian sẽ hàn gắn mọi thứ.

28. Dù có trong trường hợp nào, tốt hay xấu, mọi thứ đều sẽ thay đổi.

29. Công việc của bạn sẽ không chăm sóc được bạn khi ốm đâu, mà chỉ có những người thân và bạn bè. Vậy nên hãy giữ liên lạc thường xuyên với họ.

30. Loại bỏ bất cứ thứ gì không có ích. Hãy vui tươi hơn.

31. Ghen tị là một việc làm lãng phí thời gian. Bạn đã có mọi thứ bạn cần hoặc sẽ có được những gì bạn thực sự muốn.

32. Điều tốt nhất là điều chưa đến.

33. Cho dù bạn có cảm thấy như thế nào, hãy thức dậy, thay đồ và thể hiện mình.

34. Tận hưởng cuộc sống ở mọi thời điểm và thử những điều mới lạ.

35. Gọi điện thoại cho gia đình thường xuyên.

36. Để cho tâm hồn luôn luôn hạnh phúc bạn sẽ thấy thực sự hạnh phúc.

37. Mỗi ngày làm một việc tốt cho người khác.

38. Đừng làm quá sức. Hãy giữ giới hạn cho riêng mình.

39. Khi bạn thức dậy vào mỗi buổi sáng, nên cám ơn cuộc sống.

40. Hãy yêu bản thân bởi bạn là duy nhất và tuyệt vời theo cách riêng của bạn.

Minh Anh
Theo AWT