Tự học Java theo cách đơn giản

Bài mới nhất gửi 31/12/2008 11:20 AM, do TrungDD gửi. 0 hồi âm.
Trang 1 trên 1
Cách sắp xếp: Trước Tiếp
  • 31/12/2008 11:20 AM

    • TrungDD
    • Top 10 Contributor
    • Joined on 29/07/2008
    • Violet Hole
    • Điểm 30,800

    Tự học Java theo cách đơn giản

    Mở đầu 

    Dù bạn đến với lập trình (Programming) như thế nào chúng tôi cũng hy vọng với hiểu biết giới hạn cùng cố gắng nhỏ nhoi của mình sẽ giúp bạn một phần nào đó.

    Tất cả những gì ở đây là sự chia sẻ. Chúng ta sẽ cùng nhau đi vào thế giới lập trình theo một cách đơn giản nhất.
    Mỗi người trong chúng ta đến với lập trình (Programming) theo những cách khác nhau. Người thì vì sự mê say , người thì tò mò, người lại muốn tìm một nghề nghiệp...Mặc dù vậy, theo chúng tôi, chúng ta cần xác định một điều:
    Nếu thật sự mong muốn học được một ngôn ngữ lập trình, đừng bao giờ chạy theo "phong trào"

    Nếu bạn quyết định chọn C thì cố gắng theo đến cùng, hay ít nhất cũng nắm vững nền tảng cơ bản của ngôn ngữ C. Nếu bạn quyết theo Java thì nên tìm hiểu đến nơi đến chốn. Không có ngôn ngữ nào hơn ngôn ngữ nào cả nếu bạn không nắm rõ. Khi bạn thật sự thuần thục một ngôn ngữ, việc chuyển qua tìm hiểu một ngôn ngữ khác sẽ rất dễ dàng với bạn.

    Chúng ta sẽ cũng nhau thảo luận về Java. Theo chúng tôi, Java là ngôn ngữ tương đối "dễ thở" cho những người mới tìm hiểu lập trình. Tuy vậy, cũng như tất cả các ngôn ngữ khác, khi chúng ta bước lên những bậc cao hơn nó đòi hỏi chúng ta phải nỗ lực rất nhiều.

    Trước khi bắt đầu, chúng ta cần xác định:

       i. Đơn giản: Chúng ta sẽ tiếp cận Java theo cách đơn giản nhất.

       ii Thực hành: Bạn có đọc hết 3-4 cuốn giáo trình Java mà ít thực hành thì có lẽ cũng không thu được kết quả bao nhiêu.

       ii. Cố gắng đi đến cùng. Nếu bạn cứ "chạy" từ C qua Java, từ VB qua C++, từ JSP qua ASP...thì sẽ khó mà nắm bắt nền tảng của mỗi ngôn ngữ.

       iv. Bạn phải nắm căn bản: Byte là gì, bit là gì; thập phân là gì, nhị phân là gì... Cái này thì không thể "đơn giản"được.

       v. Lập trình là cái gì vậy nhỉ?

          Nói nôm na thì lập trình (Programming) là công việc giống như của một người phiên dịch, dịch ngôn ngữ của chúng ta ra một thứ ngôn ngữ mà máy tính (Computer) có thể hiểu được. Ngôn ngữ con người thì vô cùng đa dạng, tiếng Anh, tiếng Pháp, tiếng Việt... Ngôn ngữ máy (Machine language)thì vô cùng ... đơn giản , chỉ có bật và tắt mà thôi. Máy tính của chúng ta chỉ có thể hiểu được hai trạng thái bật và tắt, có tín hiệu hay không có tín hiệu. Ví dụ ta qui định cho máy biết là bật bật tắt là đi, tắt bật tắt là chạy thì công việc của người lập trình sẽ là biến câu lệnh "đi" hay "go" hay "aller" thành bật bật tắt. Tức là ngồi trước máy và nhấn nút power liên tục.

         Thật ra có mấy vấn đề:

       - Ngôn ngữ của con người quá phong phú, hơn nữa lại dài dòng, cần tạo một ngôn ngữ chung và đơn giản hơn..

       - Nói ngôn ngữ máy cho đơn giản, nhưng máy tính (Computer) cũng như chúng ta phải "học" ngôn ngữ của chúng.

       - Việc ngồi và "dịch" một ngôn ngữ con người dù đã được đơn giản hoá ra một chuỗi những bật-tắt của ngôn ngữ máy quả là một công việc khủng khiếp.

    Tóm lại ta cần hai "ngôn ngữ trung gian":

       1. Thứ nhất để dịch ngôn ngữ bình thường Anh, Pháp, Đức, Việt...ra một ngôn ngữ chung và đơn giản hơn. Đó chính là các ngôn ngữ lập trình như C, Pascal...

       2. Thứ hai để dịch ngôn ngữ thứ nhất ra thành ngôn ngữ máy. Đó chính là các trình biên dịch/thông dịch.

    Công việc của chúng ta bây giờ là dùng ngôn ngữ lập trình với các cú pháp (syntax) và ngữ nghĩa (semantic) nhất định tạo ra các lệnh cần thiết cho máy tính làm, sau đó dùng trình biên dịch để dịch các lệnh đó ra ngôn ngữ máy tính.
    Ở đây có một khái niệm, đúng hơn là hai từ, hai khái niệm luôn khiến chúng ta dễ lẫn lộn là "Compiler" và "Interpreter". Theo ý kiến cá nhân chúng tôi thì bạn không nên dịch ra thông dịch, biên dịch làm gì. Khi nói đến Compiler, bạn hãy nghĩ đến Complete (Chỉ để dễ nhớ, hoàn toàn không liên quan) tức là hoàn thành, nghĩa là Compiler dịch mã nguồn (Phần thứ nhất ở trên) sang mã máy một lần duy nhất thành một chương trình có thể chạy được. Còn Interpreter, bạn hãy nghĩ đến Incomplete, cũng sẽ dịch mã nguồn sang mã máy nhưng là mỗi lần chạy. Nói cách khác chương trình của bạn không tự chạy một mình được, mỗi lần chạy nó phải cần một bộ thông dịch nạp trước.

    Rất mong dù là đơn giản hóa mọi việc nhưng bạn sẽ hiểu rõ bộ khung của vấn đề vì Java là một sự khác biệt, chúng ta sẽ bàn sau.

    Một số khái niệm căn bản

    Trước khi tìm hiểu Java hay bất kỳ một ngôn ngữ lập trình nào, như đã nói trong phần mở đầu, chúng ta nên tìm hiểu một số khái niệm căn bản.

    Có lẽ khi tìm hiểu về lập trình, dù là đã khá lâu hay mới...hôm qua thì bạn cũng đã nghe tới hệ đếm nhị phân, thập phân...Tại sao lại cần những cái đó nhỉ?

    Chúng ta thường đếm 1,2,3,4,5... Nhưng khổ nỗi, ngay cả mấy con số đơn giản đó máy tính cũng không thể hiểu! Nó chỉ hiểu được hai trạng thái: có-không, bật -tắt, có tín hiệu-không có tín hiệu... Nói cách khác, nếu ta qui định sô 0 là một trạng thái và số 1 là một trạng thái khác thì máy tính sẽ hiểu được hai con số đó. Và nếu ta qui định một trật tự sắp xếp nào đó cho một nhóm vài số 0-1 thành các chữ a-b-c... hay các số 1-2-3-4....và "dạy cho máy tính" biết thì nó sẽ hiểu. Khoan nói tới các chữ, chỉ bàn tới các con số, có lẽ bạn sẽ nhận ra rằng để máy tính hiểu các số 123 hay 3765 thì chúng ta phải thay thế bằng một dãy các số 0-1.Bạn dùng thử chính chương trình Calculator của Windows để xem số 123 đổi qua các số 0-1 (nhị phân,sẽ bàn sau) sẽ là gì. Trên menu của Calculator, bạn click vào View, sau đó chọn Scientific. Nhập số 123, sau đó click chọn Bin, bạn sẽ thấy số 123 tương đương với 1111011. Số 1111011 này chính là số 123 chuyển qua hệ đếm nhị phân (Binary number system)

    Hệ đếm:

    Hệ đếm dùng để đếm. Có rất nhiều hệ đếm khác nhau: Hệ 2, hệ 8, hệ 10, hệ 16...

    Trong hệ đếm ta sẽ gặp khái niệm cơ số. Cơ số là số lượng ký hiệu dùng trong hệ đếm. Ví dụ hệ đếm cơ số 2 sẽ có 2 ký hiệu là 0-1; hệ đếm cơ số 10 thì có 10 ký hiệu là: 0-1-2-3-4-5-6-7-8-9.

    Một cách chung nhất thì hệ đếm cơ số a sẽ sử dụng a ký hiệu để biểu diễn và giá trị nhỏ nhất bằng 0 , giá trị lớn nhất bằng a-1. Các số trong mỗi hệ đếm được sắp xếp theo thứ tự từ phải qua trái và được ký hiệu từ bắt đầu từ 0. Giá trị của chữ số n bằng số đó nhân với giá trị vị trí. Nếu gọi n số lượng các chữ số, số đầu tiên có vị trí là n-1, số thứ hai có vị trí là n-2... , ta sẽ có giá trị vị trí = a vị trí .

    Ví dụ: Số 123 ở ví dụ trên, số 1 sẽ có vị trí là 2 (3-1), số 2 sẽ có vị trí là 1(3-2) và số 3 sẽ có vị trí là 0(3-3).Giá trị vị trí tương ứng sẽ là 102 - 101 - 100.Và giá trị các số sẽ là: 102 x 1 + 101 x 2 + 100 x 3 = 100 + 20 + 3 = 123

    Chuyển một số từ hệ 10 sang hệ 2:

    Bạn chia số đó liên tục cho 2 cho đến khi kết quả phép chia bằng 0. Sau đó lấy phần dư các lần chia viết theo thứ tự ngược lại như hình dưới.

    Bit và Byte:

    Một bit chính là một số nhị phân, có giá trị 0 hoặc 1. Bạn thấy 1 bit sẽ có bao nhiêu giá trị khác nhau? Chỉ có 2 giá trị khác nhau là 0 hay 1. Vậy 2 bit thì sao? Ta sẽ có 4 cặp giá trị khác nhau: 00-11-01-10. Tổng quát n bit sẽ có an giá trị khác nhau.

    Một byte bằng 8 bit. Tại sao một byte = 8 bit? Bạn tham khảo bảng ASCII sau:

    Bạn sẽ thấy tổng cộng có 256 trường hợp khác nhau cần biểu diễn.

    Ta sẽ cần bao nhiêu bit để biểu diễn 256 trường hợp khác nhau?

    Theo như trên, bạn sẽ dễ dàng thấy 2 8 = 256 tức là cần 8 bit.

    Giới thiệu JAVA

    Java là một công nghệ xây dựng các ứng dụng phần mềm được coi là công nghệ mang tính cách mạng và khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống nhất trên nhiều nền tảng mà chỉ cần biên dịch một lần.

    Lần đầu tiên xuất hiện vào năm 1992 như là một ngôn ngữ dùng trong nội bộ tập đoàn Sun Microsystems để xây dựng ứng dụng điều khiển các bộ xử lý bên trong máy điện thoại cầm tay, lò vi sóng, các thiết bị điện tử dân dụng khác. Không chỉ là một ngôn ngữ, Java còn là một nền tảng phát triển và triển khai ứng dụng trong đó máy ảo Java, bộ thông dịch có vai trò trung tâm.

    Giới thiệu Java

    Java là một ngôn ngữ lập trình(programming language) được Sun Microsystems giới thiệu vào tháng 6 năm 1995. Từ đó, nó đã trở thành một công cụ lập trình của các lập trình viên chuyên nghiệp. Java được xây dựng trên nền tảng của C và C++. Do vậy nó sử dụng các cú pháp của C và các đặc trưng hướng đối tượng của C++.

    Mặc dù mục tiêu ban đầu không phải cho Internet nhưng do đặc trưng không phụ thuộc thiết bị nên Java đã trở thành ngôn ngữ lập trình cho Internet.

    Java là gì

    Java là ngôn ngữ lập trình hướng đối tượng.

    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 bằng công cụ JAVAC để chuyển thành dạng ByteCode(file class). Sau đó được thực thi trên từng loại máy cụ thể nhờ chương trình thông dịch. Mục tiêu của các nhà thiết kế Java là cho phép người lập trình viết chương trình một lần nhưng có thể chạy trên bất cứ phần cứng cụ thể.

    Ngày nay, Java được sử dụng rộng rãi để viết chương trình chạy trên Internet. Nó là ngôn ngữ lập trình hướng đối tượng độc lập thiết bị, không phụ thuộc vào hệ điều hành. Nó không chỉ dùng để viết các ứng dụng chạy đơn lẻ hay trong mạng mà còn để xây dựng các trình điều khiển thiết bị cho điện thoại di động, PDA, …

    Các đặc trưng của Java

        * Đơn giản
        * Hướng đối tượng
        * Độc lập phần cứng và hệ điều hành
        * Mạnh
        * Bảo mật
        * Phân tán
        * Đa luồng
        * Động

    Các kiểu chương trình Java

    Chúng ta có thể xây dựng các loại chương trình Java như sau:

    Applets

    Đây là chương trình chạy trên Internet thông qua các trình duyệt hỗ trợ Java như IE hay Netscape. Bạn có thể dùng các công cụ của Java để xây dựng Applet. Applet được nhúng bên trong trang Web hoặc file HTML. Khi trang Web hiển thị trong trình duyệt, Applet sẽ được nạp và thực thi.

    Ứng dụng thực thi qua dòng lệnh

    Các chương trình này chạy từ dấu nhắc lệnh và không sử dụng giao diện đồ họa. Các thông tin nhập xuất được thể hiện tại dấu nhắc lệnh.

    Ứng dụng đồ họa

    Đây là các chương trình Java chạy độc lập cho phép người dùng tương tác qua giao diện đồ họa.

    Servlet

    Java thích hợp để phát triển ứng dụng nhiều lớp. Applet là chương trình đồ họa chạy trên trình duyệt tại máy trạm. Ở các ứng dụng Web, máy trạm gửi yêu cầu tới máy chủ. Máy chủ xử lý và gửi ngược kết quả trở lại máy trạm. Các chương trình Java API chạy trên máy chủ giám sát các quá trình tại máy chủ và trả lời các yêu cầu của máy trạm. Các chương trình Java API chạy trên máy chủ này mở rộng khả năng của các ứng dụng Java API chuẩn. Các ứng dụng trên máy chủ này được gọi là các Servlet. hoặc Applet tại máy chủ. Các xử lý trên Form của HTML là cách sử dụng đơn giản nhất của Servlet. Chúng còn có thể được dùng để xử lý dữ liệu, thực thi các transaction và thường được thực thi qua máy chủ Web.

    Ứng dụng cơ sở dữ liệu

    Các ứng dụng này sử dụng JDBC API để kết nối tới cơ sở dữ liệu. Chúng có thể là Applet hay ứng dụng, nhưng Applet bị giới hạn bởi tính bảo mật.

    Máy ảo Java (JVM-Java Virtual Machine)

    Máy ảo là một phần mềm dựa trên cơ sở máy tính ảo. Nó có tập hợp các lệnh logic để xác định các hoạt động của máy tính. Người ta có thể xem nó như một hệ điều hành thu nhỏ. Nó thiết lập các lớp trừu tượng cho: Phần cứng bên dưới, hệ điều hành, mã đã biên dịch. Trình biên dịch chuyển mã nguồn thành tập các lệnh của máy ảo mà không phụ thuộc vào phần cứng cụ thể. Trình thông dịch trên mỗi máy sẽ chuyển tập lệnh này thành chương trình thực thi.
    Bộ công cụ phát triển JDK (Java Development Kit)

    Sun Microsystem đưa ra ngôn ngữ lập trình Java qua sản phẩm có tên là Java Development Kit (JDK). JDK bao gồm Java Plug-In, chúng cho phép chạy trực tiếp Java Applet hay JavaBean bằng cách dùng JRE thay cho sử dụng môi trường thực thi mặc định của trình duyệt.

    JDK chứa các công cụ sau:

    Trình biên dịch, 'javac'

    Cú pháp:
    javac [options] sourcecodename.java

    Trình thông dịch, 'java'

    Cú pháp:
    java [options] classname

    Trình dịch ngược, 'javap'

    Cú pháp:
    javap [options] classname

    Công cụ sinh tài liệu, 'javadoc'

    Cú pháp:
    javadoc [options] sourcecodename.java

    Chương trình tìm lỗi - Debug, 'jdb‘

    Cú pháp:
    jdb [options] sourcecodename.java
    OR
    jdb -host -password [options] sourcecodename.java

    Chương trình xem Applet , 'appletviewer‘

    Cú pháp:
    appletviewer [options] sourcecodename.java / url

    Có lẽ chúng ta chỉ cần điểm sơ qua như vậy thôi. Tóm lại, bạn chỉ cần phân biệt điểm khác biệt của Java so với các ngôn ngữ khác là sau khi biên dịch sẽ là một file class (ByteCode).

    Ví dụ bạn lập trình C chẳng hạn, sau khi bạn Compile, bạn sẽ có một file exe và có thể chạy được ngay.
    Nhưng nếu bạn Compile một chương trình Java bạn sẽ có một file class và bạn không thể chạy nó bằng cách Double click vào nó được mà bạn phải dùng trình thông dịch(Interpreter) Java để chạy.

    Môi trường phát triển tích hợp- Integrated Development Environment(IDE)

    Chúng ta đã tìm hiểu lập trình là gì. Tức là lập trình viên (Programmer) dùng một ngôn ngữ lập trình (Programming language) viết ra một loạt các lệnh còn được gọi là viết code hay mã nguồn. Sau đó mã nguồn sẽ được dịch ra mã máy tức là ngôn ngữ máy mà đưa cho máy tính thi hành. Vậy chúng ta dùng cái gì, chương trình gì để viết mã nguồn? Bất cứ một trình soạn thảo nào. Tuy nhiên ở đây bạn cần phân biệt hai khái niệm, đó là Plain Text Files và Rich Text Files. Đơn giản thế này, ví dụ bạn dùng Notepad nhập vào 4 chữ java, lưu lại, kiểm tra bạn sẽ thấy file txt này là 4 bytes (Coi lại bài trước để hiểu vì sao 4 chữ chiếm mất 4 byte). Nhưng cũng 4 chữ java đó mà bạn nhập vào Microsoft Word, bạn sẽ thấy dung lượng của file doc này là mấy chục KB vì có thêm rất nhiều byte để định dạng, kiểm tra. Mã nguồn của chúng ta chỉ cần đúng 4 byte mà thôi, tức là chúng ta chỉ cần Plain Text thôi, không cần và không thể có những byte thừa. Tóm lại, bạn có thể viết mã nguồn trên bất cứ trình soạn thảo nào nhưng định dạng file phải là Plain Text. Bạn hoàn toàn có thể dùng Notepad để viết mã nguồn của C, Java, Python, Pascal...Sau đó lưu lại với phần mở rộng theo qui định của mỗi ngôn ngữ, rồi dùng trình biên dịch để dịch chúng. Để thuận tiện hơn, người ta đã phát triển những phần mềm tích hợp các công đoạn đó lại, đó là IDE.

    Môi trường phát triển tích hợp - Integrated Development Environment (IDE) còn được gọi là Integrated Design Environment hay Integrated Debugging Environment là một loại phần mềm máy tính có công dụng giúp đỡ các lập trình viên trong việc phát triển phần mềm.

    Các môi trường phát triển hợp nhất thường bao gồm:

        * Một trình soạn thảo mã (source code editor): dùng để viết mã.

        * Trình biên dịch (compiler) và/hoặc trình thông dịch (interpreter).

        * Công cụ xây dựng tự động: khi sử dụng sẽ biên dịch (hoặc thông dịch) mã nguồn, thực hiện liên kết (linking), và có thể chạy chương trình một cách tự động.

        * Trình gỡ lỗi (debugger): hỗ trợ dò tìm lỗi.

        * Ngoài ra, còn có thể bao gồm hệ thống quản lí phiên bản và các công cụ nhằm đơn giản hóa công việc xây dựng giao diện người dùng đồ họa (GUI).

        * Nhiều môi trường phát triển hợp nhất hiện đại còn tích hợp trình duyệt lớp (class browser), trình quản lí đối tượng (object inspector), lược đồ phân cấp lớp (class hierarchy diagram),... để sử dụng trong việc phát triển phần mềm theo hướng đối tượng.

    Download và cài đặt

    Để lập trình được, bạn cần tối thiểu 2 thứ:

       1. Trình soạn thảo để viết mã nguồn.
       2. Chương trình biên dịch để dịch mã nguồn ra mã máy.

    Tuy nhiên có lẽ không ai làm như vậy. Với Java, bạn sẽ cần :

        * Một IDE, chúng ta sẽ chọn ECLIPSE
        * Bộ công cụ phát triển Java Development Kit (JDK), hiện tại là JDK 6

    Bạn nên download và cài đặt JDK trước, sau đó mới cài đặt Eclipse.

    Vấn đề mà nhiều bạn hay bối rối nhất là download và cài đặt JDK. Chẳng là có quá nhiều gói cài đặt "na ná nhau", và các bạn lại không chắc về những chữ như JDK, SDK, JRE, JAVA SE...Có thể bạn cũng đã đọc đâu đó tài liệu hướng dẫn cài JDK nhưng lại thấy toàn là SDK, vậy là sao nhỉ?

    Java Runtime Environment (JRE) là cái mà bạn cần nếu chỉ muốn chạy một chương trình java(Có nghĩa là bạn chỉ là người sử dụng). Bạn hay gặp yêu cầu cài JRE khi mở một trang web có Java Applet.

    Dễ lầm lẫn nhất là JDK (Java Development Kit ) và SDK (Software Development Kit). Đại khái ta tạm hiểu JDK như là một phần của SDK. Tóm tắt thế này:

    JDK = J2SE (Java 2 Standard Edition)
    SDK = J2EE (Java 2 Enterprise Edition)

    Có lẽ dễ thấy là Enterprise thì sẽ hơn Standard. Chỉ cần biết cái ta cần hiện tại là JDK. Nếu muốn đầy đủ thì bạn vẫn có thể thoải mái download SDK, không có vấn đề gì cả. Bạn vào trang web sau để download một gói JDK, trừ những gói cài đặt chỉ ghi là JRE hay Source Code, Documents, bạn có thể download bất cứ gói JDK nào. Theo chúng tôi thì bạn nên chọn những gói cài đặt đơn thuần ví dụ JDK 5 hay JDK 6, không cần thiết download những bản cài có những cụm từ như "with Java EE" chẳng hạn, vì nhu cầu hiện tại của chúng ta không nhiều. Mới nhất Là JDK 6, nhưng bạn hoàn toàn có thể download và cài JDK 5. Không cần cài JRE vì trong gói JDK đã bao gồm JRE rồi.

    Tùy từng thời điểm mà màn hình download của Sun sẽ khác nhau. Và cũng tùy bản cài đặt bạn chọn mà màn hình tiếp theo cũng sẽ khác nhau. Chính vì vậy bạn cần tùy vào thực tế mà thao tác cho phù hợp.

    Luôn nhớ cái bạn cần trong thời gian đầu này là hai chương trình Javac.exe và Java.exe. Bạn có thể tìm thấy hai chương trình này trong thư mục Bin của thư mục cài đặt Java.

    Tiếp theo bạn cần Download Eclipse. Bạn có thể chọn Eclipse Classic hay Eclipse IDE For Java Developers để download. Rất đơn giản, chỉ việc chọn và double click để down về thôi. Đừng quá cứng nhắc và lo lắng. Hãy nhớ đây chỉ là IDE, bạn có thể thay gói cài đặt khác, có thể thay IDE khác.

    Việc download chỉ xin bạn luôn nhớ: Đừng quá cứng nhắc. Bản JDK 5 hay 6 gì cũng được. Bạn có thể dùng Eclipse hay JBuilder, NetBeans hay bất cứ một IDE nào kể cả dùng Notepad. Trong thời gian đầu, cái mà bạn thực sự cần chỉ là một trình soan thảo, một trình Javac để biên dịch và một trình Java để chạy và "ngắm nghía thành quả."

    Cài đặt JDK

    Sau khi đã download JDK về máy, bạn double click vào nó để bắt đầu cài đặt. Một lần nữa nhắc lại là bạn hãy thoải mái lựa chọn gói cài thích hợp, JDK 5 hay JDK 6 cũng được.

    - Double click vào gói cài đặt để bắtđầu tiến hành cài đặt.

    - Click chọn I accept the terms....Sau đó bấm nút Next

    Chú ý:Thư mục cài mặc định có khoảng trắng giữa các chữ,điều này có thể gây lỗi sau này. Bạn nên thay đổi tên ngắn gọn hơn và không có khoảng trắng giữa các chữ. Ví dụ: C:\Program Files\Java\jdk6\

    - Click vào Next button

    - Sau đó JRE cũng sẽ được cài. Bạn cứ để nguyên thư mục như mặc định.

    - Click Finish để hoàn tất cài đặt

    Nếu bạn đã download SDK, các bước cũng tương tự.

    Cài đặt Eclipse

    Eclipse là một IDE (Integrated Development Environment) dùng cho việc phát triển các ứng dụng viết bằng java. Hiện nay, trên thị trường có rất nhiều IDE phát triển Java tốt nhưng không phải IDE nào cũng đảm bảo được đầy đủ các phương diện: miễn phí, đòi hỏi cấu hình máy thấp, dễ sử dụng, dễ cài đặt, và giao diện đẹp. Sau khi dùng thử, chúng tôi nhận thấy Eclipse là một IDE có thể đảm bảo tốt các yêu cầu trên. Ngoài ra, Eclipse còn có thể được tích hợp các plug-in sao cho phù hợp với yêu cầu người sử dụng.

    Nói là cài đặt, thật sự bạn chỉ cần giải nén file cài đặt đã download vào một thư mục(Folder) nào đó mà thôi. Sau đó trong Folder mới, bạn tìm file eclipse.exe để chạy chương trình.

    Bạn nên tạo một shortcut icon cho eclipse ở screen desktop như sau: kích phải vào C:\eclipse\eclipse.exe ->Send To -> Desktop (create shortcut).

    Vậy là chúng ta đã cài đặt xong JDK và Eclipse. Lúc này bạn hoàn toàn có thể viết code và chạy thử nghiệm. Tuy nhiên, bạn cần tìm hiểu qua về thiết lập biến môi trường cũng như đôi nét về lập trình hướng đối tượng trước khi chúng ta cùng nhau viết những dòng code đầu tiên.

    Thiết lập các biến môi trường

    Trước hết bạn tham khảo nguyên văn nói về việc cài đặt biến Path của Sun Microsystem: "You can run the Java 2 SDK without setting the PATH variable, or you can optionally set it as a convenience"

    Đại khái thế này: Nếu sau khi viết code xong , bạn lưu file java cùng thư mục cài JDK, cụ thể là bạn lưu trong thư mục Bin, thì bạn hoàn toàn có thể biên dịch và chạy thử chương trình của mình mà không gặp lỗi nào cả, cũng không cần thiết lập biến môi trường nào cả. Mục đích chính của việc thiết lập biến môi trường là để bạn có thể chạy các chương trình như java.exe, javac.exe... từ các thư mục khác nhau (Mà không phải nhập Full Path). Tóm lại, việc thiết lập biến môi trường nhằm tạo thuận lợi cho chúng ta.

    Có 2 biến bạn cần thiết lập: JAVA_HOME và PATH

    Copy hoặc ghi ra giấy đường dẫn thư mục cài đặt. Ví dụ C:\Program Files\Java\jdk6\ như trong phần cài đặt JDK.
    Sau đó, bạn vào Control Panel -> System -> Advanced System Settings sau đó click vào "Environment Variables" button. Hoặc Control Panel -> System, và chọn Advanced tab sau đó click "Environment Variables" button nếu bạn đang dùng Windows XP.

    Hoặc bạn vào bằng cách Right Click lên My Computer, sau đó click vào Advanced Tab, trong phần System Variables bạn click vào New để tạo một System Variables mới.

    Trong cửa sổ New System Variables, bạn nhập JAVA_HOME vào Variable Name, nhập đường dẫn thư mục cài JDK vào Variable Value(Ví dụ C:\Program Files\Java\jdk6\)

    Tiếp tục bạn click vào Path-->Edit..-->Và nhập <Java Home>\bin vào biến Path . <Java Home>\bin có thể nhập trực tiếp ví dụ:C:\Program Files\Java\jdk6\bin hoặc nhập %JAVA_HOME%\bin

    Bạn nhớ có dấu ";" giữa các biến.

    Như vậy là chúng ta đã thiết lập xong biến môi trường.

    Giới thiệu về lập trình hướng đối tượng

    Để đơn giản, chúng ta sẽ bỏ qua mọi khái niệm trừu tượng. Chỉ cần nhớ thế này: Từ thuở "khai thiên lập địa" bộ môn lập trình, có tổng cộng là 3 loại lập trình, 3 phương pháp lập trình:

       1. Lập trình tuần tự
       2. Lập trình cấu trúc
       3. Lập trình hướng đối tượng

    Thông thường, nhiều bạn sẽ rất mơ hồ với khái niệm Lập trình hướng đối tượng. Khoan hãy nói tới định nghĩa, chúng ta lấy một ví dụ về tìm nghiệm của phương trình bậc 2 chẳng hạn để phân biệt.

        * Lập trình tuần tự: Chương trình được lập trình theo phương pháp này sẽ yêu cầu người sử dụng tuần tự nhập các hắng số a-b-c, sau đó chương trình sẽ tính Delta, sau đó căn cứ vào công thức và Delta mà đưa ra lời giải. Tóm lại là từng bước, từng bước một, nếu bạn không nhập hằng a thì chương trình sẽ đợi vô thời hạn cho đến khi nào bạn nhập thì sẽ đưa ra lời nhắc nhở bạn tiếp tục nhập hằng c...

        * Lập trình cấu trúc, hay còn gọi là lập trình theo hướng thủ tục:Bài toán giải phương trình bậc hai sẽ được chia ra thành một số công việc, hay còn gọi là thủ tục khác nhau. Ví dụ như ta có thể có các thủ tục (các hàm) sau trong bài toán giải phương trình bậc hai: hàm tính Delta, hàm nhập liệu, hàm so sánh Delta...

        * Lập trình hướng đối tượng: Mọi thứ sẽ được qui ra thành các đối tượng(Object). Trong ví dụ của chúng ta, nếu dùng phương pháp lập trình hướng đối tượng ta có thể coi bài toán gồm 1 đối tượng (Object) đó là Phương trình.Đối tượng phương trình này có thể tạm coi gồm có những tính chất chung (dữ liệu) là có hắng số (một hoặc nhiều) và nghiệm (một hoặc nhiều).Ứng xử (phương thức) của Object phương trình có thể là:tiếp nhận các hằng số, tính toán,đưa ra kết quả. Với phương trình bâc hai của chúng ta chẳng hạn, bạn sẽ dựa vào đối tượng phương trình để tính toán. Tóm lại, người ta đem gói tất cả dữ liệu và các phương thức có liên quan với nhau thành một nhóm,đó chính là đối tượng (Object)

    Lập trình hướng đối tượng (OOP, từ chữ Anh ngữ object-oriented programming), là kĩ thuật lập trình hỗ trợ công nghệ đối tượng.

    Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ liệu mà chúng được nhìn nhận như là một đơn vị duy nhất. Mỗi đối tượng có một tên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó. Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữ liệu (bên trong của nó), và gửi ra hay trả lời đến các đối tượng khác hay đến môi trường

    Lập trình truyền thống là lập trình cấu trúc hay lập trình hướng thủ tục. Một bài toán được giải quyết bằng cách chia ra thành nhiều bài toán nhỏ và thực hiện thông qua các chương trình con. Phương pháp lập trình này có một số hạn chế như:

        * Ngôn ngữ không phân chia rõ ràng giữa cấp cài đặt và cấp sử dụng.
        * Sự trộn lẫn khiến chương trình khó đọc khó sửa.
        * Không có tính kế thừa.

    OOP là phương pháp lập trình lấy đối tượng làm nền tảng, có các tính chất cơ bản sau:

        * Tính trừu tượng (abstraction): Đây là khả năng của chương trình bỏ qua hay không chú ý đến một số khía cạnh của thông tin mà nó đang trực tiếp làm việc lên, nghĩa là nó có khả năng tập trung vào những cốt lõi cần thiết. Mỗi đối tượng phục vụ như là một "động tử" có thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi trạng thái của nó và liên lạc với các đối tượng khác mà không cần cho biết làm cách nào đối tượng tiến hành được các thao tác. Tính chất này thường được gọi là sự trừu tượng của dữ liệu.

          Tính trừu tượng còn thể hiện qua việc một đối tượng ban đầu có thể có một số đặc điểm chung cho nhiều đối tượng khác như là sự mở rộng của nó nhưng bản thân đối tượng ban đầu này có thể không có các biện pháp thi hành. Tính trừu tượng này thường được xác định trong khái niệm gọi là lớp trừu tượng hay lớp cơ sở trừu tượng.

        * Tính đóng gói (encapsulation)che dấu thông tin (information hiding): Tính chất này không cho phép người sử dụng các đối tượng thay đổi trạng thái nội tại của một đối tượng. Chỉ có các phương thức nội tại của đối tượng cho phép thay đổi trạng thái của nó. Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã. Đây là tính chất đảm bảo sự toàn vẹn của đối tượng.

        * Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp (message). Việc gửi các thông điệp này có thể so sánh như việc gọi các hàm bên trong của một đối tượng. Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau. Người lập trình có thể định nghĩa một đặc tính (chẳng hạn thông qua tên của các phương thức) cho một loạt các đối tượng gần nhau nhưng khi thi hành thì dùng cùng một tên gọi mà sự thi hành của mỗi đối tượng sẽ tự động xảy ra tương ứng theo đặc tính của từng đối tượng mà không bị nhầm lẫn.

    Thí dụ khi định nghĩa hai đối tượng "hinh_vuong" và "hinh_tron" thì có một phương thức chung là "chu_vi". Khi gọi phương thức này thì nếu đối tượng là "hinh_vuong" nó sẽ tính theo công thức khác với khi đối tượng là "hinh_tron".

        * Tính kế thừa (inheritance): Đặc tính này cho phép một đối tượng có thể có sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa. Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại. Tuy nhiên, không phải ngôn ngữ định hướng đối tượng nào cũng có tính chất này.

    Một ví dụ khác trong việc Mua bán xe hơi:

    Những yếu tố liên quan là:

        * Các kiểu xe hơi.
        * Nhân viên bán hàng.
        * Khách hàng.

    Những hoạt động liên quan đến việc mua bán là:

        * Nhân viên bán hàng đưa khách đi coi xe.
        * Khách hàng chọn xe
        * Khách hàng trả tiền.
        * Xe được giao cho khách hàng

    Trong Lập trình hướng đối tượng, mỗi vấn đề được chia thành nhiều Đối tượng (Objects). Như trên các kiểu xe, nhân viên, khách hàng là những đối tượng.

    Một số khái niệm cơ bản trước khi tìm hiểu Java.

    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 mà chia sẽ sự kế thừa gọi là Lớp cha (parent class).

    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.

    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 ngôn ngữ lập trình 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. 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 đó.

    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ó.

    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.

    Cấu trúc một chương trình Java

    Có lẽ chúng ta hãy thử bàn tới về cấu trúc của một chương trình nói chung.
    Ví dụ như một bài văn, ta sẽ có cấu trúc bao gồm:

        * Mở bài
        * Thân bài
        * Kết luận

    Các ngôn ngữ lập trình nói chung cũng sẽ có cấu trúc tương tự:

        * Khai báo: chứa các khai báo về tài nguyên sẽ sử dụng
        * Thân chương trình: là phần chính, bao gồm các hàm, các lệnh mô tả công việc sẽđược thực hiện.
        * Giải phóng bộ nhớ

    Đó là nói chung, tùy vào từng ngôn ngữ cụ thể sẽ có các cấu trúc khác nhau.
    Đây là một ví dụ của chương trình C++


    Còn đây là chương trình tương tự viết bằng Java

    Nói chung, một chương trình Java được chia thành các lớp (class) riêng biệt. Thật ra ở đây luôn có sự lẫn lộn và mơ hồ cho các bạn mới làm quen với Java. Nhiều người trong chúng ta đã quen thuộc với hệ thống Thư mục và Tập tin của Windows.

    Một chương trình Java có thể chỉ gồm có một File cũng có thể gồm nhiều File khác nhau. Các file này có thể nằm cùng Folder, cũng có thể nằm trong các Folder khác nhau. Class như một chương trong File truyện của bạn. Bạn có thể viết nhiều truyện và lưu trong vài Folder khác nhau. Mỗi Folder như vậy gọi là một gói hay Package.

    Tóm lại:

    -Một chương trình Java có thể bao gồm một hay nhiều Package.
    -Mỗi package sẽ có một hay nhiều File.
    -Trong mỗi File sẽ có một hay nhiều Class. Nếu muốn sử dụng "bất cứ cái gì" ở Package khác, chúng ta phải dùng phát biểu "import"

    Dạng cơ bản của một lớp được xác định như sau :

    Ví dụ:

    Chương trình đầu tiên

    Chúng ta hãy bắt đầu từ chương trình Java cổ điển nhất với một ứng dụng đơn giản. Chương trình sau đây cho phép hiển thị một thông điệp:


    Tên file đóng vai trò rất quan trọng trong Java. Trong Java các mã cần phải gom thành các lớp. Bởi vậy tên lớp và tên file có thể trùng nhau. Do đó Java phân biệt rạch ròi chữ in hoa và chữ in thường (case-sensitive). Ví dụ tên file 'First' và 'first' là hai file khác nhau.

    Đặt tên fle bạn nên lưu ý:

        * Nếu bạn có import một lớp ví dụ tên là MyClass, thì tên file bạn không được đặt là MyClass .
        * Nếu bạn tạo file với mục đích tạo lớp MyClass, thì khi lưu file bạn phải lưu với tên file là MyClass.java

    Để biên dịch mã nguồn, ta xử dụng trình biên dịch javac. Trình biên dịch xác định tên của file nguồn tại dòng lệnh như mô tả dưới đây:

    C:\jdk1,2,1\bin>javac First.Java

    Trình dịch javac tạo ra file First.class chứa các mã "bytecodes". Những mã này chưa thể thực thi được. Để chương trình thực thi được ta cần dùng trình thông dịch "java interpreter"
    Lệnh được thực hiện như sau:

    C:\jdk1,1,1\bin>java First

    Kết quả sẽ hiển thị trên màn hình như sau:

    My first program in Java

    Phân tích:

    // This is a simple program called "First.java"
    Ký hiệu "// " dùng để thuyết minh dòng lệnh. Trình biên dịch sẽ bỏ qua dòng thuyết minh này. Java còn hỗ trợ thuyết minh nhiều dòng. Loại thuyết minh này có thể bắt đầu với

    / *This is a multi line comment */
    Dòng kế tiếp khai báo lớp có tên ‘First’. Để tạo một lớp thêm ta bắt đầu với từ khoá ‘class’, kế đến là tên lớp (và cũng chính là tên file).

    class First
    Tên lớp nói chung nên bắt đầu bằng chữ in hoa.

    Từ khoá 'class' khai báo định nghĩa lớp. 'First' là định danh cho tên của lớp. Một định nghĩa lớp trọn vẹn không nằm giữa hai ngoặc móc (curly braces) đóng và mở. Các ngoặc này đánh dấu bắt đầu và kết thúc một khối các lớp được định nghiã.

    public static void main(String args[ ])
    Đây là phương thức chính, từ đây chương trình bắt đầu việc thực thi của mình. Tất cả các ứng dụng java (Dạng application) đều sử dụng một phương pháp "main" này. Chúng ta sẽ tìm hiểu từng từ trong phát biểu này.

    Từ khoá 'public' là một chỉ định truy xuất. Nó cho biết thành viên của lớp có thể được truy xuất từ bất cứ đâu trong chương trình. Trong trường hợp này, phương thức "main" được khai báo 'public', bởi vậy JVM có thể truy xuất phương thức này.

    Từ khoá 'static' cho phép main được gọi tới mà không cần tạo ra một thể hiện (instance) của lớp. Nhưng trong trường hợp này, bản copy của phương thức main được phép tồn tại trên bộ nhớ, thậm chí nếu không có một thể hiện của lớp đó được tạo ra. Điều này rất quan trọng vì JVM trước tiên gọi phương thức main để thực thi chương trình. Vì lý do này phương thức main cần phải là tĩnh (static). Nó không phụ thuộc vào các thể hiện của lớp được tạo ra.
    Từ khoá 'void' thông báo cho máy tính biết rằng phương thức sẽ không trả lại bất cứ giá trị nào khi thực thi chương trình.

    Phương thức 'main()' sẽ thực hiện một số tác vụ nào đó, nó là điểm mốc mà từ đó tất cả các ứng dụng Java được khởi động.

    'String args[' là tham số dùng trong phương thức 'main'. Các biến số trong dấu ngoặc đơn nhận từng thông tin được chuyển vào 'main'. Những biến này là các tham số của phương thức. Thậm chí ngay khi không có một thông tin nào được chuyển vào 'main', phương thức vẫn được thực hiện với các dữ liệu rỗng – không có gì trong dấu ngoặc đơn.

    'args[' là một mảng kiểu "String". Các đối số (arguments) từ các dòng lệnh được lưu vào mảng. Mã nằm giữa dấu ngoặc móc của 'main' được goi là 'method block'. Các phát biểu được thực thi trong ‘main’ cần được chỉ rõ trong khối này.

    System.out.println("My first program in Java");

    Dòng lệnh này hiển thị chuỗi "My first program in Java" trên màn hình. Phát biểu 'println()' tạo ra một cổng xuất (output). Phương thức này cho phép hiển thị một chuỗi nếu chuỗi đó được đưa vào với sự trợ giúp của 'System.out'. Ở đây ‘System’ là một lớp đã định trước, nó cho phép truy nhập vào hệ thống và 'out' là một chuỗi xuất được kết nối với dấu nhắc (console).

    Thực hành Hello World

    Trong bài thực hành này, chúng tôi muốn bạn thử viết code, dịch và chạy thử chương trình Hello World với 2 cách khác nhau, mục đích là để bạn thật sự hiểu vấn đề. Sau này, chúng ta sẽ chỉ dùng Eclipse mà thôi.

    Dùng Notepad và Command Line

    Mở Notepad và nhập vào chương trình sau, lưu lại với tên HelloWorld.java


        * Vào Start --> Run gõ cmd để cửa sổ dòng lệnh mở ra
        * Chuyển đổi vào thư mục lưu trữ tập tin và gõ javac HelloWorld.java
        * Kiểm tra lại nội dung thư mục:
        * Nếu bạn thấy có thêm file HelloWorld thì bạn đã dịch thành công
        * Dùng lệnh java HelloWorld để chạy thử chương trình (Xin lưu ý là chỉ java HelloWorld, không phải java HelloWorld.class).
        * Nếu màn hình hiện lên chữ Hello World thì bạn đã hoàn thành chương trình đầu tiên của mình.

    Dùng Eclipse


    Vào menu File -->New --->Java Project để tạo một dự án Java mới. Cửa sổ sau sẽ xuất hiện cho phép nhập tên của dự án. Ví dụ: Tên dự án là Test

    Click vào Finish để sang trang kế tiếp.Trong Test project, bạn tạo một lớp tên là First bằng cách vào menu File --> New -->Class để cửa sổ hiện ra. Sau khi nhập tên First vào ô Name

    Nhập chương trình HelloWorld vào khung giữa như hình bên dưới. Khi bạn Click nút Save mà không thấy lỗi thì coi như bạn đã dịch hoàn tất chương trình, click vào nút Run để chạy, bạn sẽ thấy dòng chữ Hello World bên dưới. Vậy là bạn đã thành công!

    Hãy cùng nhau ôn lại những gì ta đã thảo luận

        * Lập trình (Programming) là một dạng dịch từ ngôn ngữ tự nhiên thành ngôn ngữ máy thông qua một ngôn ngữ lập trình (Programming language).
        * Java là một ngôn ngữ lập trình huớng đối tượng: Mọi thứ đều qui về đối tượng (Object)
        * Mọi chương trình Java đều bao gồm các lớp (Class)
        * Class có thể coi như là một khái niệm, trong khi Object là một mô hình thật. Ví dụ: Class Người -->Object : anh A, chị B; Class xe --> Xe Honda, xe Toyota
        * Có nhiều cách để viết code, dịch và chạy một chương trình. Thông thường các lập trình viên sẽ dùng một IDE.


    Thông thường nhiều bạn sẽ dễ dàng vượt qua việc viết code cho chương trình đơn giản đầu tiên. Tuy nhiên, cũng rất nhiều bạn sẽ chỉ dừng bước tại đó. Vấn đề là dù ngôn ngữ nào, cũng sẽ có rất nhiều khái niệm, cú pháp...Bạn cần phải kiên trì.
    Cũng như khi chúng ta học ngoại ngữ. Sẽ rất nhiều người dễ dàng nắm bắt những câu như "This is a book" hay "That is a pen" . Nhưng đôi khi chúng ta cứ dậm chân tại chỗ, không tiến xa hơn được nữa.
    Bạn cần cố gắng đi ít nhất là 51% con đường. Thực hành là chìa khóa của thành công.
    Chúng ta sẽ cố gắng đi từ đơn giản đến phức tạp, các ví dụ thực hành sẽ dựa vào ví dụ đơn giản nhất và sẽ phát triển dần dần.

    Lớp (Class) trong Java

    Nói một cách đơn giản thì class là mẫu, còn đối tượng (object) là những sản phẩm tạo thành dựa trên mẫu tức là class.
    Tất cả các đối tượng đều thuộc về một lớp có chung đặc tính và hành vi.
    Mỗi lớp xác định một thực thể, trong khi đó mỗi đối tượng là một thể hiện thực sự.
    Bạn còn có thể định nghĩa một lớp bên trong một lớp khác.
    Như đã bàn trong phần trước, các Class sẽ tạo thành chương trình của bạn.

    Khai báo lớp

    Khi ban khai báo một lớp, bạn cần xác định dữ liệu và các phương thức của lớp đó. Ngoài ra bạn cũng cần hiểu rõ về constructor.

    Ví dụ cụ thể của lớp (class) xe đạp (Bicycle)

    Đừng quá bận tâm về chi tiết. Bạn sẽ thấy class này có đầy đủ Fields, Contructor và các Phương thức(Method)

    Dựa vào mẫu này bạn có thể tạo ra những đối tượng xe đạp khác nhau như xe đạp đua, xe đạp địa hình...

    Class và Object

    Class và Object là hai khái niệm mà chúng tôi muốn bạn đặc biệt nắm vững. Để nắm vững class và object, bạn nên có một cái nhìn tổng quát.
    Chúng ta lập trình cho rất nhiều mục đích: từ giải một bài toán đơn giản như tìm nghiệm của phương trình; vẽ một hình ảnh lên màn hình; một chò trơi đố chữ đơn giản; hiện lên thông tin sau khi người sử dụng nhập dữ liệu...cho tới những chương trình điều khiển máy móc, tính toán phức tạp... Bạn cần nắm rõ mục đích lập trình, sau đó thử hình dung chương trinh sẽ gồm những đối tượng nào. Cách đơn giản nhất là từ một cái lớn chia dần ra thành những cái nhỏ.

    Chúng ta tiếp tục với một ví dụ:

    Giả sử bạn muốn viết một chương trình đố ô chữ đơn giản chẳng hạn.

    Thử nghĩ xem chúng ta cần gì? Một lần nữa xin bạn nhớ là hãy thoải mái, đừng quá cứng nhắc.
    Quay lại ví dụ của chúng ta, có lẽ chúng ta sẽ cần một công cụ để vẽ hình giống hình trên. Chúng ta cũng cần một công cụ khác để xem xét những gì người sử dụng nhập vào có đúng không.Có lẽ như vậy là đủ rồi. Bạn đừng chú ý tới chi tiết, hãy nhìn thật tổng quát.

    Luôn nhớ là chúng ta cần đi từ đơn giản và mọi cái chỉ là gợi ý, bạn hoàn toàn có thể làm mọi chuyện.
    Với công cụ vẽ hình, tạm gọi là Lớp Vẽ Hình. Ta sẽ thử nghĩ xem ta cần gì? Ta cần phải vẽ đường thẳng, ta cần phải tô màu. Ta cần số ô ngang, ô dọc. Ta cũng cần một công cụ để tạo sẵn những số liệu cho ô chữ.
    Từ suy luận trên, ta tạm coi như Lớp Vẽ Hình sẽ có các dữ liệu (Attibutes) là số ô ngang, ô dọc. Lớp này cũng sẽ có một phương thức (Method) tạm gọi là DrawCross để vẽ ô chữ và một phương thức tạm gọi là CreateWords đê tạo sẵn số liệu.
    Bạn có thể tạo một bộ khung, đại khái như sau(Khoan bàn tới Public hay Static....):

    Đây chỉ là cái nền để bạn dễ hình dung về class mà thôi. Bạn có thể thêm bớt, sửa đổi...tùy ý.
    Hãy tiếp tục thêm một bước nữa. Ta thấy phương thức (Method) DrawCross muốn vẽ được thì phải có số liệu, ví dụ như vẽ bao nhiêu hàng ngang-bao nhiêu hàng dọc. Nói cách khác phương thức này cần thêm Tham Số. Vậy ta có thể thêm như sau:


    Để đơn giản ta coi như xong về cơ bản lớp DrawCrossWord (Không chi tiết, cũng không bàn tới phương thức CreateWords). Muốn vẽ ô chữ, bạn phải có một Object, Object này tạo ra từ lớp DrawCrossWord bằng từ khóa new

    Ví dụ: DrawCrossWord object1= new DrawCrossWord();

    Hãy nghĩ tới khi bạn vẽ lại một hình vuông mà cô hay thầy giáo vẽ mẫu cho bạn trên bảng. Nghĩa là nó không giống hoàn toàn, nhưng có đầy đủ 4 cạnh và 4 góc vuông. Object1 bạn vừa tạo bằng từ khóa new cũng vậy, nó có đầy đủ các dữ liệu và phương thức như lớp DrawCrossWor. Tuy nhiên, như phần trước, bạn lưu ý lớp thì trừu tượng, còn đối tượng thì cụ thể. Dữ liệu của lớp thì trừu tượng, còn đối tượng thì phải cụ thể. Muốn dùng Object1 để vẽ, bạn phải cung cấp dữ liệu cụ thể, ví dụ 5 hàng ngang và 5 hàng dọc. Ta sẽ có


    Vậy là bạn đã tạo ra một lớp, từ lớp đó bạn tạo ra một đối tượng. Dùng một phương thức của đối tượng đó, bạn đã vẽ ra ô chữ 5 hàng ngang và 5 hàng dọc.

    [HaiPhong-Aptech] st

    • Điểm bài gửi: 3
Trang 1 trên 1
© 2004-2013 Aptech Computer Education - Hai Phong Giới thiệu  |  Liên hệ