1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Cấu trúc và giao diện doc

24 880 0
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 0,95 MB

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

Nội dung

Các thành viên của struct không có bộ khởi gán initializer.interface IShape private string key; private string value; public KeyValuestring key, string value{ this.key = key; this.value

Trang 1

CẤU TRÚC VÀ GIAO DIỆN

Giảng viên phụ trách:

Nguyễn Hoàng Tùng

Bộ môn Tin học Email: nhoangtung@agu.edu.vn

Trang 2

Mục đích bài học

Cấu trúc (struct):

Khái niệm, khai báo và sử dụng struct,

Phân biệt được struct và class,

Nhận biết khi nào nên dùng struct.

Giao diện (interface)

Khái niệm, khai báo và sử dụng interface,

Phân biệt được interface và lớp abstract,

Xây dựng interface.

Trang 3

Cấu trúc (struct)

Là một kiểu dữ liệu tham trị (value type).

Sử dụng struct đối với các kiểu dữ liệu nhỏ, đơn giản, có các phương thức và thuộc tính như kiểu dữ liệu bẩm sinh ( int ,

float , string , ).

Dùng để đóng gói các trường dữ liệu có liên quan với nhau.

Ví dụ: Tạo cấu trúc để biểu diễn một điểm trên trục toạ độ

hai chiều.

Trang 4

Khai báo struct

Cú pháp:

[access-modifier] struct identifier [:interface-list] { struct member }

Ví dụ:

public struct Location {

private int xVal;

private int yVal;

public Location(int x, int y) {

public struct Location {

private int xVal ;

private int yVal ;

public Location( int x , int y ) {

this xVal = x ;

this yVal = y ; }

public override string ToString( ) {

return String.Format (“{0},{1}”,

xVal , yVal );

public int X {

get { return xVal; } set { xVal = value; } }

public int Y {

get { return yVal; } set { yVal = value; } }

public int X

{

get { return xVal ; }

set { xVal = value ; } }

public int Y

{

get { return yVal ; }

set { yVal = value ; } }

Trang 5

Hàm tạo và Kế thừa

Ngầm định kế thừa từ lớp Object Ngoài ra, struct không kế thừa bất cứ class hay struct nào khác, và không làm cơ sở cho một class hay struct nào khác.

Không dùng từ khóa abstract và sealed

Biến thành viên không có từ khóa protected

Các phương thức không có từ khóa abstract và virtual

Từ khóa override chỉ sử dụng khi override các phương thức được kế thừa từ đối tượng Object.

Trang 6

Hàm tạo và Kế thừa

Struct có thể thực thi (xây dựng lại) nhiều interface.

Nếu có hàm tạo thì phải có tham số, không cho phép hàm tạo không tham số.

Các thành viên của struct không có bộ khởi gán (initializer).interface IShape()

private string key;

private string value;

public KeyValue(string key, string value){

this.key = key; this.value = value;

}}

struct KeyValue{

private string key;

private string value;

public KeyValue(string key, string value){

this.key = key; this.value = value;

}}

Trang 7

Struct là một kiểu dữ liệu tham trị

Trang 8

Một kiểu khai báo khác của struct

Tạo đối tượng struct không dùng từ khóa new :

Struct là kiểu trị nên có thể tạo một đối tượng struct không cần

từ khóa new (giống như các kiểu bẩm sinh: int , long , )

Không triệu gọi hàm tạo (constructor).

Phải khởi gán các biến thành viên trước khi gọi các phương thức.

Không triệu gọi hàm tạo

Phải khởi gán các biến thành viên trước khi gọi các phương thức.

Phải khởi gán các biến thành viên trước khi gọi các phương thức.

Trang 9

So sánh struct và class

Trang 10

Sử dụng struct khi nào?

Thể hiện ( instance ) có kích thước nhỏ (16 byte).

Có chu kỳ ngắn.

Thông thường nằm lồng trong một đối tượng thuộc class nào đó.

Không có ý định cho việc kế thừa.

Không thường xuyên được sử dụng để boxing

Trang 11

Demo struct

Trang 12

Giao diện (interface)

Giao diện giống như một bản vẽ thiết kế, nó đảm bảo việc các chương trình muốn xây dựng lại giao diện phải thực thi tất cả những gì trong bản vẽ.

Trang 13

Khai báo interface

Cú pháp:

[access-modifier] interface identifier [:base-list] { interface body }

Không thể cài đặt code trong phần thân.

Tên giao diện nên bắt đầu bằng chữ I hoa (IShape, ISinhVien) Các thành viên trong phần thân chỉ bao gồm: phương thức, thuộc tính, sự kiện, bộ chỉ mục.

Không thể chứa: hằng, biến, toán tử, hàm tạo, hàm hủy,

kiểu dữ liệu và các từ khóa: abstract , public , protected ,

internal , private , virtual , override

Trang 14

void Write(object obj);

int Status { get; set; }}

interface IStorable

{

void Read();void Write(object obj);

int Status { get; set; }

}

public class Document : Istorable {

public void Read() {

Console.WriteLine("Thi công hàm Read của IStorable");

}public void Write(object obj) {

Console.WriteLine(obj);

}private int m_Status;

public int Status {

get { return m_Status; }

set { m_Status = value; }

public class Document : Istorable {

public void Read() {

Console.WriteLine("Thi công hàm Read của IStorable");

Trang 15

void Write(object obj);

int Status { get; set; }}

int Status { get; set; }

private int m_Status;

// Thi công giao diện IStorable

public void Read() { … }public void Write(object obj) { … }

public int Status { … }

// Thi công giao diện ICompressible

public void Compress()

public class Document : IStorable,

ICompressible

{

private int m_Status;

// Thi công giao diện IStorable

public void Read() { … }

public void Write(object obj) { … }

public int Status { … }

// Thi công giao diện ICompressible

public void Compress()

Trang 16

Xây dựng interface

Thiết đặt cùng lúc nhiều giao diện:

Trang 17

Xây dựng interface

Phối hợp cùng lúc nhiều giao diện và mở rộng:

interface IStorable {

void Read();

void Write(object obj);

int Status { get; set; }}

int Status { get; set; }

public int Status { … }

// ICompressiblepublic void Compress() { … }

public void Decompress() { … }

public class Document :

IStorableCompressible {

private int m_Status;

// IStorable

public void Read() { … }

public void Write(object obj) { … }

public int Status { … }

Trang 18

Xây dựng interface

Phối hợp cùng lúc nhiều giao diện và mở rộng:

Trang 19

Truy xuất các phương thức của interface

Truy xuất các thành viên của IStorable thông qua các thành

viên của lớp Document.

Không thể tạo thể hiện giao diện một cách trực tiếp.

Tạo thể hiện của giao diện bằng cách ép ( casting ) đối

tượng Document về kiểu IStorable.

static void Main(string[] args) {

Document doc = new Document();

doc.Status = -1;

doc.Read();

// Tạo thể hiện bàng cách ép

IStorable iStor = (IStorable)doc;

static void Main(string[] args) {

Document();

// Tạo thể hiện bàng cách ép

Ép đối tượng Document về kiểu giao diện IStorable.

Ép đối tượng Document về kiểu giao diện IStorable.

Trang 20

Truy xuất các phương thức của interface

Document doc = new Document();

IStorable iStor = doc as IStorable;

if (iStor != null)

if (iStor != null)

Trang 21

So sánh interface và lớp abstract

Trang 22

So sánh interface và lớp abstract

Abstract class cũng có thể thiết đặt một interface nên cũng

phải thi công tất cả các thành viên của các interface.

Được phép ánh xạ các hàm của interface thành các hàm trừu tượng.

interface IStorable

{

void Read();

void Write(object obj);

}

interface IStorable

{

void Read();void Write(object

obj);

}

abstract class AbsClass : IStorable

{

public abstract void Read();

public abstract void Write(object obj);}

abstract class AbsClass : IStorable

{

public abstract void Read();

public abstract void Write(object obj);}

Lớp kế thừa abstract class phải tuân thủ xây dựng lại tất cả các thành phần

abstract.

Lớp kế thừa abstract class phải tuân thủ xây dựng lại tất cả các thành phần

abstract.

Trang 23

Demo interface

Trang 24

Giải đáp thắc mắc

Ngày đăng: 26/02/2014, 13:20

TỪ KHÓA LIÊN QUAN

w