Archive for category OOP

Tìm hiểu cơ bản Objective – C (P.3)

1.1.  Association References

Sử dụng tham chiếu liên kết để giả lập việc bổ sung các biến thể hiện đối tượng vào một đối tượng khác.

Việc khởi tạo một tham chiếu liên kết chủ yếu dựa trên một key, ta có thể thêm nhiều liên kết nếu ta muốn với nhiều key khác nhau, sử dụng hàm runtime của Objective-C là objc_setAssociatedObject

void objc_setAssociatedObject (id object, void *key, id value, objc_AssociationPolicy policy)

object: đối tượng nguồn của liên kết

key: khóa của liên kết. Khóa này thường là đối tượng static.

value: giá trị liên kết với khóa cho đối tượng. Đưa giá trị nil để xóa một liên kết đã tồn tại

policy: các policy cho liên kết

static char overviewKey;

NSArray *array = [[NSArray alloc] initWithObjects:@”One”, @”Two”, @”Three”, nil];

NSString *overview = [[NSString alloc] initWithFormat:@”%@”, @”First three numbers”];

objc_setAssociatedObject(array, &overviewKey, overview, OBJC_ASSOCIATION_RETAIN);

Tạo liên kết overview vào đối tượng array, ta truy xuất đối tượng liên kết overview thông qua đối tượng array và khóa

NSString *associatedObject = (NSString *)objc_getAssociatedObject(array, &overviewKey);

Đọc tiếp »

Bình luận về bài viết này

Tìm hiểu cơ bản Objective – C (P.2)

1.1.  Lớp

1.1.1.     Các khái niệm cơ bản

1.1.1.1.          Định nghĩa lớp

Một lớp trong Objective-C được định nghĩa gồm 2 file thành phần tương tự C, C++. Một file *.h định nghĩa trước các biến thành phần và tên các phương thức, file *.m định nghĩa phần thực thi cho các phương thức trong file *.h

 

File ClassName.h

 

#import <headerFile.h>

 

@interface ClassName {

variable1 declaration;

variable2 declaration;

}

method1 declaration;

method2 declaration;

@end

 

Objective-C sử dụng từ khóa @interface để khai báo một tên lớp trong file h. Từ khóa @end được sử dụng ở cuối phần khai báo.

 

File ClassName.m

 

#import “ClassName.h”

 

@implementation ClassName

-method 1 //triển khai phương thức 1

-method 2 // triển khai phương thức 2

@end

 

Objective-C sử dụng từ khóa @implementation để khai báo phần thực thi thực sự của lớp trong file m. Từ khóa @end được sử dụng ở cuối phần khai báo.

Đọc tiếp »

1 bình luận

Tìm hiểu cơ bản Objective – C (P.1)

1.    Giới thiệu

Ngôn ngữ lập trình Objective-C là một ngôn ngữ lập trình hướng đối tượng được xây dựng chủ yếu dựa trên nền tảng ANSI C, và ngoài ra nó còn được mở rộng từ Smalltalk, một trong những ngôn ngữ lập trình hướng đối tượng đầu tiên. Objective-C được thiết kế với mục đích đưa vào C các tính năng hướng đối tượng một các đơn giản và dễ hiểu nhất.

Objective-C là ngôn ngữ chính được Apple chọn để viết các ứng dụng cho hệ điều hành MAC, iPod và iPhone.

Như vậy, để nắm được Objective-C bạn phải có kinh nghiệm về ngôn ngữ C. Nếu bạn có kiến thức tốt về C thì bạn có thể nắm nhanh Objective-C và có thể bắt đầu phát triển các ứng dụng cho iPhone và hệ điều hành MAC. Nếu không, bạn nên dành thời gian tìm hiểu thêm về ngôn ngữ C trước khi tìm hiểu Objective-C.

Đọc tiếp »

4 bình luận

Hướng đối tượng – OO (P.4)

4.  CÁC NGUYÊN LÝ HƯỚNG ĐỐI TƯỢNG

4.1.  Nguyên lý “đóng mở”

Một moudle cần “mở” đối với việc phát triển thêm tính năng nhưng phải “đóng” đối với việc sửa đổi mã nguồn

Các thực thể trong một phần mềm không đứng riêng lẻ mà có sự gắn kết chặt chẽ với nhau. Chúng phối hợp hoạt động để cùng nhau thực hiện các chức năng của phần mềm. Do đó, việc nâng cấp, mở rộng một thực thể nào đó sẽ ảnh hưởng đến những thực thể liên quan. Điều này có thể dẫn đến việc phải nâng cấp, mở rộng cả những thực thể liên quan đó. Và trong thời đại đầy biến động hiện nay, việc phải thường xuyên nâng cấp, mở rộng các thực thể trong phần mềm là điều khó tránh khỏi.

Để làm cho quá trình bảo trì, nâng cấp, mở rộng phần mềm diễn ra dễ dàng và hiệu quả hơn, các thực thể phần mềm nên được xây dựng tuân theo nguyên lý Open -Closed. Điều này có nghĩa là các thực thể phần mềm nên được xây dựng sao cho việc nâng cấp, mở rộng đồng nghĩa với việc thêm vào những cái mới chứ không phải là thay đổi những cái hiện có, từ đó tránh được việc phải thay đổi các thực thể liên quan.

Đọc tiếp »

1 bình luận

Hướng đối tượng – OO (P.3)

3.  LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (C#)

3.1.  Lớp và các thành phần lớp

3.1.1.     Định nghĩa lớp

Lớp được định nghĩa theo cú pháp:

class ClassName

{

}

Ví dụ: Ta xây dựng một lớp Person đại diện cho các đối tượng người

class Person

{

}

3.1.2.     Thuộc tính

Cú pháp định nghĩa của một thuộc tính:

[modifier] datatype attName;

Ví dụ: Lớp Person ở trên có các thuộc tính: name, age

class Person

{

private string name;

private byte age;

} Đọc tiếp »

Bình luận về bài viết này

Hướng đối tượng – OO (P.2)

2.  CÁC KHÁI NIỆM CƠ BẢN

2.1.  Đối tượng

–         Các đối tượng là chìa khóa để hiểu được kỹ thuật hướng đối tượng. Bạn có thể nhìn xung quanh và thấy được nhiều đối tượng trong thế giới thực như: con chó, cái bàn, quyển vở, cây viết, tivi, xe hơi… Trong một hệ thống hướng đối tượng, mọi thứ đều là đối tượng. Một bảng tính, một ô trong bảng tính, một biểu đồ, một bảng báo cáo, một con số hay một số điện thoại, một tập tin, một thư mục, một máy in, một câu hoặc một từ, thậm chí một ký tự, tất cả chúng là những ví dụ của một đối tượng.

–         Rõ ràng chúng ta viết một chương trình hướng đối tượng cũng có nghĩa là chúng ta đang xây dựng một mô hình của một vài bộ phận trong thế giới thực. Tuy nhiên các đối tượng này có thể được biểu diễn hay mô hình trên máy tính.

–         Một đối tượng thế giới thực là một thực thể cụ thể mà thông thường bạn có thể sờ, nhìn thấy hay cảm nhận được. Tất cả các đối tượng trong thế giới thực đều có trạng thái (state) và hành động (behaviour).

Ví dụ:

Đối tượng: xe đạp

Trạng thái: bánh răng, bàn đạp, dây xích

Hành động: tăng tốc, giảm tốc, chuyển bánh răng

–         Các đối tượng phần mềm (software object) có thể được dùng để biểu diễn các đối tượng thế giới thực. Chúng được mô hình sau khi các đối tượng thế giới thực có cả trạng thái và hành động. Giống như các đối tượng thế giới thực, các đối tượng phần mềm cũng có thể có trạng thái và hành động. Một đối tượng phần mềm có biến (variable) hay trạng thái (state) mà thường được gọi là thuộc tính (attribute; property) để duy trì trạng thái của nó và phương thức (method) để thực hiện các hành động của nó. Thuộc tính là một hạng mục dữ liệu được đặt tên bởi một định danh (identifier) trong khi phương thức là một chức năng được kết hợp với đối tượng chứa nó.

Đọc tiếp »

Bình luận về bài viết này

Hướng đối tượng – OO (P.1)

1.  GIỚI THIỆU

1.1.  Phương pháp lập trình truyền thống

1.1.1.     Lập trình tuyến tính

–         Đặc trưng cơ bản của lập trình tuyến tính là tư duy theo lối tuần tự. Chương trình sẽ được thực hiện tuần tự từ đầu đến cuối, lệnh này kế tiếp lệnh kia cho đến khi kết thúc chương trình.

–         Đặc trưng

  • Đơn giản: chương trình được tiến hành đơn giản theo lối tuần tự, không phức tạp.
  • Đơn luồng: chỉ có một luồng công việc duy nhất, và các công việc được thực hiện tuần tự trong luồng đó.

–         Tính chất

  • Ưu điểm: Do tính đơn giản, lập trình tuyến tính có ưu điểm là chương trình đơn giản, dễ hiểu. Lập trình tuyến tính được ứng dụng cho các chương trình đơn giản.
  • Nhược điểm: Với các ứng dụng phức tạp, người ta không thể dùng lập trình tuyến tính để giải quyết.

1.1.2.     Lập trình hướng thủ tục

–         Trong lập trình hướng cấu trúc, chương trình chính được chia nhỏ thành các chương trình con và mỗi chương trình con thực hiện một công việc xác định. Chương trình chính sẽ gọi đến chương trình con theo một giải thuật, hoặc một cấu trúc được xác định trong chương trình chính.

–         Với các tiếp cận này thì một hệ thống phần mềm được xem như là một danh sách các công việc cần thực hiện(đọc dữ liệu, xử lý, kết xuất…). Những công việc này sẽ được thực hiện bởi một số hàm nhất định, và các hàm chức năng này được xem là trọng tâm của phương pháp lập trình hướng thủ tục

–         Đặc trưng

Chương trình = Cấu trúc dữ liệu + Giải thuật

  • Cấu trúc dữ liệu là cách tổ chức dữ liệu, cách mô tả bài toán dưới dạng ngôn ngữ lập trình
  • Giải thuật là một quy trình để thực hiện một công việc xác định

Trong chương trình, giải thuật có quan hệ phụ thuộc vào cấu trúc dữ liệu:

  • Một cấu trúc dữ liệu chỉ phù hợp với một số hạn chế các giải thuật.
  • Nếu thay đổi cấu trúc dữ liệu thì phải thay đổi giải thuật cho phù hợp.
  • Một giải thuật thường phải đi kèm với một cấu trúc dữ liệu nhất định.

–         Tính chất

  • Ưu điểm
    • Chia nhỏ chương trình thành các nhóm chức năng, các chương trình con giúp lập trình viên dễ nhận biết và quản lý chương trình
    • Tư duy giải thuật rõ ràng
  • Nhược điểm
    • Phương pháp này chú trọng vào các hàm chức năng nên khi một chức năng được thực hiện bằng nhiều hàm thì chúng sẽ phải khai báo các nhóm dữ liệu chung (toàn cục) để nhập, thay đổi … do đó khó kiểm soát
    • Khó khăn trong việc nâng cấp, bổ sung, không hỗ trợ mạnh việc sử dụng lại mã nguồn.
    • Không phù hợp với các hệ thống phần mềm lớn
    • Không thể hiện trung thực thế giới thực

    Đọc tiếp »

2 bình luận

Các mẫu thiết kế hướng đối tượng (P.4)

Structural Pattern


Các mẫu Structural diễn tả một cách có hiệu quả cả việc phân chia hoặc kết hợp các phần tử trong một ứng dụng. Những cách mà các mẫu Structural áp dụng vào ứng dụng rất rộng: ví dụ, mẫu Adapter có thể làm cho hai hệ thống không tương thích có thể giao tiếp với nhau, trong khi mẫu Façade cho phép bạn làm đơn giản hóa một giao tiếp để sử dụng mà không cần gỡ bỏ tất cả các tùy biến đã có trong hệ thống


3.1. Adapter Pattern

– Ý nghĩa
Tạo một giao diện trung gian để gắn kết vào hệ thống một lớp đối tượng mong muốn nào đó.

– Cấu trúc mẫu

Đọc tiếp »

,

Bình luận về bài viết này

Các mẫu thiết kế hướng đối tượng (P.3)

BEHAVIORAL PATTERNS
Mẫu Behavioral có liên quan đến luồng điều khiển của hệ thống. Một vài cách của tổ chức điều khiển bên trong một hệ thống để có thể nâng mang lại các lợi ích cả về hiệu suất lẫn khả năng bảo trì hệ thống đó

2.1.Chain of Responsibility

– Ý nghĩa
Mẫu này thiết lập một chuỗi bên trong một hệ thống, nơi mà các thông điệp hoặc có thể được thực hiện ở tại một mức nơi mà nó được nhận lần đầu hoặc là được chuyển đến một đối tượng mà có thể thực hiện điều đó
– Mô hình mẫu

Đọc tiếp »

,

Bình luận về bài viết này

Các mẫu thiết kế hướng đối tượng (P.2)

Trong phần này ta sẽ tìm hiểu về các mẫu thiết kế trong nhóm mẫu kiến tạo (Creational Pattern)
1.Mẫu kiến tạo(Creational Pattern)
Những mẫu này hỗ trợ cho một trong những nhiệm vụ của lập trình hướng đối tượng – khởi tạo đối tượng trong hệ thống. Hầu hết các hệ thống hướng đối tượng phức tạp yêu cầu nhiều đối tượng được thể hiện theo thời gian, và các mẫu này hỗ trợ cho việc tạo các tiến trình bằng việc cung cấp các khả năng:
– Sự thể hiện chung – Điều này cho phép các đối tượng được tạo ra trong hệ thống không cần phải định nghĩa một đặc tả kiểu lớp trong mã nguồn
– Đơn giản – Một vài mẫu làm cho việc khởi tạo đối tượng trở nên dễ dàng, vì vậy lớp “gọi” khởi tạo đối tượng không phải viết mã nhiều cũng như phức tạp

1.1.Abstract Factory Method Pattern

– Ý nghĩa
Đóng gói một nhóm những lớp đóng vai trò “sản xuất” (Factory) trong ứng dụng, đây là những lớp được dùng để tạo lập các đối tượng. Các lớp sản xuất này có chung một giao diện lập trình được kế thừa từ một lớp cha thuần ảo gọi là “lớp sản xuất ảo”

– Cấu trúc mẫu

Đọc tiếp »

,

3 bình luận