1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Ôn thi Viên Chức Ngành Y tế Tài liệu ôn thi môn Công nghệ thông tin Phần Tìm hiểu về lập trình hướng đối tượng

8 1,7K 2

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 757,41 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ôn thi Viên Chức Ngành Y tế Tài liệu ôn thi môn Công nghệ thông tin Phần Tìm hiểu về lập trình hướng đối tượng Ôn thi Viên Chức Ngành Y tế Tài liệu ôn thi môn Công nghệ thông tin Phần Tìm hiểu về lập trình hướng đối tượng v Ôn thi Viên Chức Ngành Y tế Tài liệu ôn thi môn Công nghệ thông tin Phần Tìm hiểu về lập trình hướng đối tượng

Trang 1

Lập trình hướng đối tượng (OOP)

Lập trình hướng đối tượng được ghi tắt là OOP (object-oriented programming) Là một phuơng hướng lập trình tách biệt so với kiểu cổ điển Sử dụng đối tượng để lập trình nên những chuỗi tuơng tác OOP giúp cho các lập trình viên có thể tiết kiệm nhiều thời gian hơn so với cách viết cổ điển

Có thể hiểu cách lập trình OOP và bạn phải xây dựng được một loại khuôn mẫu cho sản phẩm của bạn Sau đó việc cần làm của bạn là đổ nguyên liệu vào khuôn và đúc thành sản phẩm OOP chính là cái khuôn đó

Trong bài hôm nay chúng ta sẽ đi tìm hiểu về lập trình hướng đối tượng trong PHP Dưới đây là mô hình Hướng đối tượng cơ bản của một Page khi truy xuất CSDL bằng OOP

Như vậy ta thấy được, trong mô hình trên, các thông tin từ Browser sau khi được trang PHP tiếp nhận Trang PHP sẽ tiếp tục sử dụng các lớp đối tượng tuơng ứng Khi các lớp đối tượng được gọi Các lớp này sẽ sử dụng một lớp khác có chức năng hoàn toàn khác để bổ trợ cho chính nó Quá trình hoạt động này sẽ đơn giản hóa,

tự động hóa các thao tác làm bằng code của lập trình viên Cái bạn cần là cho phép đối tượng đó chạy ở khu vực nào

Trong bài này chúng ta sẽ đi qua các ví dụ đan xen trong lý thuyết để hiểu rõ hơn về các mô hình Class sẽ xây dựng

I Class

1 Khái niệm : Nghĩa đen là một LỚP Ý nghĩa theo lập trình là một đối tượng cơ bản chứa tất cả các thuộc tính

và phương thức của 1 đối tượng sẽ được tạo từ Class

Để đỡ khó hiểu ta có thể xem Class kiểu như một lớp học Trong lớp học sẽ có 2 loại phần tử Tài sản và học sinh

Tài sản : Là những vật dụng, dụng cụ học tập, bàn ghế, bảng, phấn … Là những tài sản chung của nhiều lớp,

lớp nào cũng có những tài sản giống nhau như vậy Không lớp nào có bàn mà không có ghế, hoặc không thể có

1 lớp lại có hồ bơi ở giữa lớp ^^

2 Khai báo :

1

2

3

4

5

6

<?php

//Khai báo Class

className_of_Class{

}

?>

3 Ví dụ :

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

//Khai báo Class Members

classMembers{

var$id= '';

var$fullname= '';

var$age= '';

var$city= '';

publicfunctionGet_Name_of_Father($id){

}

publicfunctionSet_value($id,$fullname,$age,$city){

$this->id = $id;

$this->fullname = $fullname;

Trang 2

14

15

16

17

18

19

20

$this->age = $age;

$this->city = $city;

}

}

?>

4.Tầm vực biến trong Class : Như các bạn thấy, tại sao sau khi khai báo các Class tôi phải khai báo các biến

$id, $fullname, $age … Nếu không khai báo, khi sử dụng trong function Set_value, các biến nội tại như

$this->id … sẽ không nhận giá trị

Như vậy tầm vực của biến nằm tại Class Members Nếu không khai báo các tầm vực, bạn sẽ không thể sử dụng được nó trong phạm vi các function Điều này bạn có thể thử các biến này để nhận được thông tin lỗi

II Function In Class

Khái niệm về function thì ai trong ngành lập trình cũng đều biết, nói riêng PHP của chúng ta thì lại càng quan trọng

Vậy tầm quan trọng của function nằm chỗ nào trong khi bạn cứ phải đi khai báo function tè le hết trơn Thực

tế, khi viết các đoạn code của PHP, bạn vẫn có thể không sử dụng function Nhưng chính các công đoạn quá nhiều trong lập trình web gây nảy sinh 1 vấn đề : “Code quá nhiều những đoạn code giống nhau Có quá nhiều những đoạn code giống nhau nằm trong trang PHP” Chính điều này làm cho trang PHP trở nên nặng nề hơn

về mặt code và mặt dung lượng file

Tôi có một ví dụ thực tế về bài toán cộng trừ nhân chia Với một phép cộng, nếu tôi làm 1 phép tính thì đã chẳng có chuyện gì phải nói Nhưng nếu tôi làm khoảng 100.000 phép tính và phải ngồi code từng dòng thì e rằng tôi sẽ chết trước khi code xong các phép tính này Nhưng việc đó sẽ được đơn giản hóa với Function và

sử dụng một vòng lặp trong function đó Lúc này điều đơn giản tôi cần là nhập số đầu, số cuối và bấm kết quả

mà thôi Nếu tôi tiếp tục tính một dãy những con số khác, thì lúc đó function sẽ đảm nhiệm chạy lại các đoạn code của tôi đã code mà không cần tôi phải thao tác ghi lại code cho phù hợp

Ví như một ca sĩ, phục vụ cho nhiều người nghe, nếu mỗi người muốn nghe họ phải hát lại 1 lần Thì tôi tin người ca sĩ đó sẽ chết sớm hơn tuổi thọ rất nhiều :)) Chính vì điều đó, Radio, máy hát, máy Mp3, thiết bị thu

âm, thiết bị phát âm thanh ra đời Nhằm để tạo ra đựoc loại FUNCTION nào có thể lặp bất cứ bài hát nào mặc

dù chỉ hát một lần

Phù vậy là đã nói xong những điều tàm xàm phía trên :)) Đùa chút thôi, như vậy qua ví dụ tôi đã giới thiệu được cho bạn hiểu tầm quan trọng của function trong Class

Phân loại Function

a Có giá trị trả về : Function chịu trách nhiệm xử lý dữ liệu và trả lại dữ liệu cho Process đang chờ đợi để lấy

kết quả

1

2

3

4

5

6

7

8

9

<?php

classmember{

functionGet_member_id($username){

$sql= mysql_query('SELECT m_id FROM tbl_members WHERE

username="'.$username.'"');

if(isset($sql) AND mysql_num_rows($sql)>0){

$row= mysql_fetch_assoc($sql);

return$row['m_id'];

}

}

}

Trang 3

10

11

?>

Như vậy tại một trang xử lý ta dễ dàng lấy được id của thành viên qua cấu trúc đã tạo cho function như sau :

1

2

3

4

5

<?php

$mem= newmember();

$id= $mem->Get_member_id('clackken');

echo$id;

?>

Khi đó ta sẽ có được id của username “clackken” một cách dễ dàng thông qua function

b Không có giá trị trả về : Lúc này function sẽ không trả lại giá trị cho biến khi được gọi Chúng ta cùng xét

lại ví dụ trên với cách viết khác một chút, chúng ta sẽ sử dụng id là một tài sản của Class

1

2

3

4

5

6

7

8

9

10

11

12

<?php

classmember{

var$id="";

functionGet_member_id($username){

$sql= mysql_query('SELECT m_id FROM tbl_members WHERE

username="'.$username.'"');

if(isset($sql) AND mysql_num_rows($sql)>0){

$row= mysql_fetch_assoc($sql);

$this->id = $row['m_id'];

}

}

}

?>

Khi đó ta sẽ lấy giá trị trực tiếp từ Class, vì id khi này là một tài sản riêng của Class

1

2

3

4

5

<?php

$mem= newmember();

$mem->Get_member_id('clackken');

echo$mem->id;

?>

Qua 2 ví dụ trên, để bạn có thể hiểu hơn về phương thức của Class và function Bạn có thể đăng ký giá trị là tài

sản của Class hoặc có thể trực tiếp trả về cho biến tại trang sử dụng Class thông qua keyword return

III Class in Class

Đây là một khái niệm mà với những bạn mới đến với lập trình hướng đối tượng sẽ bỡ ngỡ Khi bạn chỉ hiểu

gói gọn rằng Class chỉ là phương thức thì khi đó bạn chưa thể tùy biến lồng các Class trong các Class khác để

cùng nhau xử lý dữ liệu

Ví dụ sau sẽ mô tả rõ ràng điều này Giả sử ta có 2 Class xử lý các vấn đề riêng biệt 1 Class xử lý về thành viên,

một Class xử lý về Order Khi Order cần thông tin của thành viên để thêm vào CSDL Lúc này ta sẽ không thực

hiện đơn phương thức này nữa Mà sẽ sử dụng Class Member như là một phương tiện

1

2

3

4

5

6

7

<?php

classmember{

var$id="";

functionGet_member_id($username){

$sql= mysql_query('SELECT m_id FROM tbl_members WHERE username="'.$username.'"'); if(isset($sql) AND mysql_num_rows($sql)>0){

$row= mysql_fetch_assoc($sql);

$this->id = $row['m_id'];

}

Trang 4

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

}

}

$mem= newmember();

classorder{

functionInsert_order($username,$id_pro,$q_tity){

global$mem;

$mem->Get_member_id($username);

$sql= mysql_query('INSERT INTO tbl_orders(u_id,p_id,q_tity)

VALUES($mem->id,$id_pro,$q_tity));

if(isset($sql)){

return1;

}else{

return0;

}

}

}

$Order= neworder();

$Order->Insert_order('clackken',2,50);

?>

Class Kế thừa Class

Thế nào là kế thừa ? Kế thừa tức là thừa hưởng tất cả những gì có trong Class mà nó kế thừa

Ví dụ :

<?php

//Khai báo Class Members

class Members{

var $id = '';

var $fullname = '';

var $age = '';

var $city = '';

function Get_member_id($username){

$sql = mysql_query('SELECT m_id FROM tbl_members WHERE

username="'.$username.'"');

if(isset($sql) AND mysql_num_rows($sql)>0){

$row = mysql_fetch_assoc($sql);

$this->id = $row['m_id'];

}

}

function Set_value($fullname,$age,$city){

Trang 5

$this->fullname = $fullname;

$this->age = $age;

$this->city = $city;

}

}

//Khai báo Class Info_members

class Info_members extends Members{

function Get_name_from_id($id){

$sql = mysql_query('SELECT m_name FROM tbl_members WHERE

m_id="'.$id.'"');

if(isset($sql) AND mysql_num_rows($sql)>0){

$row = mysql_fetch_assoc($sql);

return $row['m_name'];

}

}

}

//Như vậy ta thấy Class Info_members chỉ có 1 function Get_name_from_id và nó thừa hưởng mọi function khác từ Members

//Khai báo Class và gọi giá trị

$info = new Info_members();

$info->Get_member_id('Clackken');//function này nó được kế thừa từ Class Members

$name = $info->Get_name_from_id($info->id);

echo $name;

?>

- Vậy khi xuất ra giá trị tên được trả về sẽ là Clackken Như vậy mặc dù không khai báo function

Get_member_id trong Class Info_members, nhưng nó được thừa hưởng từ chính Class Members và vẫn có thể gọi được hàm này

Định nghĩa Constructors

Constructors là gì ? Khi bạn khởi tạo một đối tượng nào đó từ Class, nếu bạn không khai báo phương thức thì các Function trong Class đó sẽ được triệu gọi khi bạn cần

Nhưng cũng với Class đó, bạn muốn khi người ta gọi Class bắt buộc phải truyền 1 thông số tối thiểu nào đó để thực hiện các phuơng thức của bạn, Constructors đảm nhiệm tốt vấn đề này

Cách khai báo thì khá đơn giản, bạn vẫn khai báo function như bình thường Điểm khác biệt ở đây là tên của function này Đầu tiên bạn phải sử dụng 2 tiếp đầu tố liên tục : và tiếp theo phải chính xác là từ này :

construct Như vậy đầy đủ là function construct($giatri){}

Ví dụ :

<?php

Trang 6

//Khai báo Class Members

class Members{

var $id = '';

var $fullname = '';

var $age = '';

var $city = '';

// Đây chính là phương thức Construct

function construct($username){

$this->Get_member_id($username);

}

function Get_member_id($username){

$sql = mysql_query('SELECT m_id FROM tbl_members WHERE

username="'.$username.'"');

if(isset($sql) AND mysql_num_rows($sql)>0){

$row = mysql_fetch_assoc($sql);

$this->id = $row['m_id'];

}

}

function Set_value($fullname,$age,$city){

$this->fullname = $fullname;

$this->age = $age;

$this->city = $city;

}

}

//Khai báo Class và gọi giá trị

$info = new Info_members('Clackken');//bắt buộc khi khai báo Class bạn phải nhập giá trị của username

echo $info->id;//Khi đó ta sẽ có giá trị id, bởi vì construct đã gọi

Get_member_id và gán giá trị,

?>

Hạn Chế Quyền Truy Cập Tài Sản

Đôi lúc, trong lớp của bạn, có nhiều cái bàn và ghế có thể cho mượn, nhưng không ai lại sang lớp bạn để mượn bàn ghế giáo viên và để giáo viên của bạn đứng mà dạy Đó chính là tài sản bị hạn chế, nó không được cho mượn hoặc dùng chung cho nhiều lớp

Đối với biến giá trị hoặc Function trong Class cũng vậy nếu bạn không muốn chia sẻ nó, bạn hoàn toàn có thể hạn chế khả năng chia sẻ của nó

Các cấp hạn chế có 3 cấp bao gồm :

Public : Chia sẻ hoàn toàn, các giá trị của nó được sử dụng trong phạm vi Class, trong phạm vi Class thừa

hưởng và kể cả phạm vi ngoài Class đã khai báo nó

Trang 7

Protected : Chia sẻ trong phạm vi Class và trong phạm vi các Class được thừa hưởng từ Class đã khai báo

Private : Chỉ cho phép chia sẻ trong phạm vi Class đã khai báo nó

Ví dụ :

<?php

//Khai báo Class Members

class Members{

var $id = '';

public $fullname = 'Clackken';

private $age = '18';

protected $city = 'Ho Chi Minh';

var $info='';

function show_value(){

$this->info = $this->fullname.'|'.$this->age.'|'.$this->city; }

}

Class Show_info extends Members{

var $fname = $this->fullname;

var $ages = $this->age;

var $citys = $this->city; //< - câu lệnh này sẽ báo lỗi vì giá trị của

nó đã bị Bảo mật

}

?>

Gọi Class ngoài vùng giá trị

- Khai báo ngoài vùng giá trị tức là gán giá trị cho 1 Class khác từ Class hiện tại bạn đang làm việc

Ví dụ :

<?php

//Khai báo Class Members

class Members{

var $fname = '';

function show_value($name){

$this->fname = $name;

}

}

Class Show_info extends Members{

protected function Get_info($name){

Members::show_value($name);// Bạn đã gán giá trị cho Class Members thông qua Class này

}

}

?>

Trang 8

Hướng đối tượng

- Sau khi đi qua mớ lằng phía trên kia chắc hẳn bạn đã bắt đầu ngán rồi nhỉ ^^ Có lẽ để bớt nhàm chán hơn, chúng ta sẽ xem các thứ đã show trên kia cái gì là hướng đối tượng, cái gì là đối tượng ?

- Sau tất cả mớ lằng nhằng về Class trên kia Chúng ta mới thấy rằng, việc lập trình hướng đối tượng sẽ chỉ tốt khi tư duy của bạn tốt Nếu tư duy của bạn chưa được khai thông thì điểm chắc chắn là bạn sẽ chẳng thể nào hiểu nổi đối tượng là cái quỷ gì

– Tôi muốn dành phần cuối của phần 2 này này để phân tích về Đối tượng

+ Ở đây tôi muốn nói về Class Members Hẳn các bạn đã code khá nhiều ở nó nên cũng khá rõ ràng Các yếu tố trong Class không chỉ sử dụng cho 1 người, 1 học sinh nào 1 Class đó có thể sử dụng cho tất cả các học sinh có trong lớp Điển hình tôi sẽ thử khai báo từ Class đã VD ở trên

<?php

include('member.class.php');//Giả sử các Class được khai báo trong trang này

//Tạo thông tin nhận dạng cho đối tượng Nguyen Van A, goi tat la NA

$NA = new Members();

//Tạo thông tin nhận dạng cho đối tượng Nguyen Van B, goi tat la NB

$NB = new Members();

//Tạo thông tin nhận dạng cho đối tượng Nguyen Van C, goi tat la NC

$NC = new Members();

// Tôi sử dụng function set_name($name) trong Class Members để khẳng định tên của từng người

$NA->set_name('Nguyen Van A');

$NB->set_name('Nguyen Van B');

$NC->set_name('Nguyen Van C');

// Show giá trị của 3 đối tượng ra màn hình

echo 'Đối tượng A :'.$NA->fname.'<br />';

echo 'Đối tượng B :'.$NB->fname.'<br />';

echo 'Đối tượng C :'.$NC->fname.'<br />';

//Output

// Đối tựong A : Nguyen Van A

// Đối tựong B : Nguyen Van B

// Đối tựong C : Nguyen Van C

?>

Ngày đăng: 19/08/2016, 22:14

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w