Toàn quốc Hướng đối tượng có nghĩa là thế nào, bí quyết khai báo, thiết lập và truy xuất đối tượng.

Thảo luận trong 'Chợ Linh Tinh' bắt đầu bởi vuthaiquang25, 11/7/16.

  1. vuthaiquang25

    vuthaiquang25 Member

    Tham gia ngày:
    18/2/16
    Bài viết:
    107
    Điểm thành tích:
    16
    Phần 1 : Hướng đối tượng có nghĩa là thế nào, cách thức khai báo, thiết lập và truy xuất đối tượng, tính chất, phương thức

    [​IMG]
    Trong nhiều năm, PHP đã bị coi là một ngôn ngữ nghèo nàn, và đứng hạng thấp trong bảng xếp hạng ngôn ngữ lập trình bởi ví nó không tương trợ tính hướng đối tượng. đến năm 2004, bản PHP 5 ra đời đã tạo ra bước ngoặc mới cho ngôn ngữ lập trình PHP, giúp PHP bắt kịp với xu thế và trở thành một trong nhiều đối phương nặng ký so với những ngôn ngữ lập trình khác. Vậy thì hướng đối tượng là gì? và tại sao nó lại đóng một tác dụng lớn bự như vậy ? Hít một hơi thật sâu, làm vài động tác thể dục, ngồi thẳng lưng và chúng ta bắt đầu phân tích và tìm hiểu về hướng đối tượng (OOP) trong PHP nào

    Theo như định nghĩa của Wikipedia thì :
    Object-oriented programming Magento Marketplace As a ‘programming paradigm that represents concepts As “objects” that Having data fields with associated procedures known At the time “methods”.

    Hướng đối tương là môt mô hình lập trình phân tách nội dụng của chương trình theo hướng cổ truyền (thủ tục) và nhóm những thuộc tính, phương thức (properties, methods) giống nhau thành một đối tượng (class), giúp rút ngắn , tránh việc dư thừa, và giữ vững được nguyên lýDRY – DONT REPEAT YOURSELF, dễ trong vấn đề báo trì, tăng hiệu quả công việc.
    Hãy thử mường tưởng bạn thiết kế 1 trang web hoặc một system lên cả nghìn, thậm chí hàng triệu dòng code, các mã lệnh đươc viết theo hướng cổ điển, một website (page) chứa nào là html, php,js, xử lý xen lẫn, trà trộn với nhau. Và Vậy là mỗi lần xuất hiện lỗi, gặp phải một vấn đề nào đó hay chỉ thuần tuý là sửa vài chỗ tí hon khi có thay đổi yêu cầu thì bạn phải lục tung cả mớ code, đi sửa từng chỗ này chỗ kia vì những đoạn code trùng lặp, điều này quả tình là một cơn ác nghiệt mộng đối với một developer. Chính vì thế OOP ra đời nhằm giúp bạn giải quyết vấn đề này.

    1. Cấu trúc course

    Để khai báo một class trong PHP, ta dùng từ khóa class, theo sau là tên lesson và một cặp ngoặc nhọn
    <?php
    class KungfuClass
    // các phương thức và thuộc tính của course được đặt ở đây

    ?>

    Sau khi tạo course xong, chúng ta có thể lưu trữ lesson vào một biến, và dùng biến này truy xuất các phương thức , tính chất của class
    Để lưu trữ course vào biến, ta dùng từ khóa ne
    <?php
    $object = recent KungfuClass();
    ?>


    Để xem cấu trúc và nội dung của class như thế nào, bạn sử dụng từ khóa var_dump() ,
    <?php
    var_dump($object);
    ?>


    reflect tất cả nội dung :
    <?php class KungfuClass
    // những phương thức và tính chất của lesson được đặt ở đây
    // Lưu trức lesson vào biến
    $object = modern KungfuClass();
    var_dump($object);
    ?>


    Vào một dossier đặt tên là bai1.php và lưu vào folder gốc của trang web, chạy đường dẫn localhost/bai1.php và xem kết quả. Thế là xong, chúng ta đã hoàn tất đoạn mã hướng đối tượng trước tiên một bí quyết đơn giản nhất, tiếp theo hãy khám phá bí quyết khai báo tính chất và phương thức trong class.
    2) Khai báo phương thuộc tính của course

    thuộc tính của course hiểu một bí quyết dễ dàng là chỉ như là một biến chứa dữ liệu bình thường của PHP, chỉ có không giống nhau là nó được đặt vào course và có mối liên can mật thiết với lesson chưa nó, và muốn truy xuất được tính chất của lesson thì phải thông qua một object . phương pháp khai báo thuộc tính của class như sau
    <?php
    course KungfuClass

    public $property1 = "Mình là thuộc tính của lesson KungfuClass !";

    // Đưa course KungfuClass vào object $object
    $object = new KungfuClass;
    // Xem nội dung object
    var_dump($object);
    ?>

    3.) Truy xuất tính chất trong course

    Để có thể truy xuất thuộc tính trong lesson, ta dùng con trỏ “->” của đối tượng thing. giả như chúng ta muốn truy xuất thuộc tính $property1 và xuất ra ngoài màng hình dòng chữ “Mình là tính chất của class KungfuClass!”, hãy xem đoạn code dưới đây
    <?php
    $object = recent KungfuClass();
    echo $object->property1;
    ?>

    4.) Khai báo phương thức trong class

    Cũng như thuộc tính, phương thức của lesson hiểu dễ dàng chính là function được đặt trong lesson, và có mối liên can khắn khít với lesson. Để tạo phương thức trong class, chúng ta làm như sau
    <?php
    class KungfuClass

    public $property1 = "Mình là thuộc tính của course KungfuClass !";
    function myMethod()
    echo "Xin chào, tôi là phương thức của class KungfuClass !";


    // Đưa course KungfuClass vào thing $object
    $object = novel KungfuClass;
    // Xem nội dung thing
    var_dump($object);
    ?>

    5 .) Truy xuất phương thức trong lesson

    Để truy xuất phương thức trong lesson, cũng như truy xuất tính chất, đơn giản chúng ta sử dụng con trỏ ->
    <?php
    lesson KungfuClass

    public $property1 = "Mình là thuộc tính của class KungfuClass !";
    function myMethod()
    echo "Xin chào, tôi là phương thức của class KungfuClass !";


    // Đưa class KungfuClass vào object $object
    $object = novel KungfuClass();
    // Xuất ra màng hình dòng chữ "Xin chào, tôi là phương thức của course KungfuClass !";
    $object -> myMethod();
    ?>

    Tuy nhiên, hướng đối tượng cho phép chúng ta thiết lập và truy xuất thuộc tính, phương thức bên trong course thông qua con trỏ $this
    <?php
    class KungfuClass

    public $property1 = "Mình là thuộc tính của class KungfuClass !";
    function myMethod()
    echo "Xin chào, tôi là phương thức của course KungfuClass !";

    function myMethod2()
    //truy xuất đến thuộc tính $property1
    echo $this->property1;
    echo "<br />";
    $this->myMethod();


    // Đưa class KungfuClass vào object $object
    $object = modern KungfuClass();
    // Xuất ra màng hình dòng chữ "Mình là tính chất của lesson KungfuClass !" và "Xin chào, tôi là phương thức của class KungfuClass !"
    $object -> myMethod2();
    ?>

    Chạy lại đoạn script trên, chúng ta sẽ thấy hình thành ra ngoài trình duyệt 2 dòng chữ đó là “Mình là tính chất của course KungfuClass !” và “Xin chào, tôi là phương thức của lesson KungfuClass !”.
    Bằng phương pháp nhóm những đối tượng có điểm tương đồng về tính chất và phương thức trong một lesson, ta gọi là lớp cha, và được các lớp khác kế thừa lại (lớp con). Chúng ta sẽ không phải mất thời kì cho việc phải khai báo đi , khai báo lại những đặc điểm chung đó. chả hạn như khi nói về xe, chúng ta có nào là xe hơi, xe máy, xe ô tô, xe tăng,…Chúng ta nhận thấy tất cả chúng đều có những đặc điểm chúng như là : vận tốc màu sắc đẹp, trọng lương, có thể chạy được,…chúng ta sẽ quy chúng về một lớp chung, tạm gọi là lớp Xe, trong lớp Xe này sẽ có những thuộc tính là vận tốc, màu sắc đẹp, kích thước và phương thức chung đó là chạy
    <?php
    class XeClass

    public $verhicle = "10km/h";
    public $weight= "1 tấn";
    public $color = "đỏ";
    function run()
    echo "Xe đang chạy";

    // Đưa lesson XeClass vào thing $xe
    $xe= recent XeClass();
    ?>

    Ở ví dụ trên, lớp xe là lớp phụ vương, chứa các đặc điểm chung của các loại xe và các loại xe như xe hơi, xe máy, xe tăng,.. là những lớp con sẽ mang nhưng mà đặc tính của lớp phụ vương, nhưng mà khác biệt ở các chi tiết như xe hơi thì có vận tốc chạy cao hơn xe máy, xe máy thì chạy nhanh hơn xe tăng,.. hoặc sự không giống nhau về màu sắc đẹp như xanh, đỏ, tím, vàng,…
    <?php

    class XeClass

    public $verhicle = "10km/s";

    public $weight= "1 tấn";

    public $color = "đỏ";

    function setVerhicle($verhicle_param)

    $this -> verhicle =$verhicle_param;



    function getVerhicle()

    return $this -> verhicle;



    function run()
    echo "Xe đang chạy";


    // Khởi tạo đối tượng xe hơi
    $xehoi = modern XeClass();

    // Khởi tạo đối tượng xe máy
    $xemay = recent XeClass();

    // Khởi tạo đối tượng xe tăng
    $xetang = current XeClass();

    //xe hơicó vận tốc 100km/h

    $xehoi -> setVerhicle ("100km/h");

    //xe máy có vận tốc 60km/h

    $xemay -> setVerhicle("60km/h");

    //xe tăngcó vận tốc 50km/h

    $xetang -> setVerhicle("50km/h");

    //Xuất ra vận tốc những loại xe khác nhauy

    //Vận tốc xe hơi

    echo $xehoi->getVerhicle();

    //Vận tốc xe máy

    echo $xemay->getVerhicle();

    //Vận tốc xe tăng

    echo $xetang->getVerhicle();
    ?>

    Ở những thí dụ trên, các bạn có để ý thấy từ khóa “public” ko ? Đó chính là tầm vực của biến, bài viết đến mình sẽ nói cụ thể hơn về vấn đề này. Thân !