Chủ nhiệm Bộ môn Phan Nguyên Hải ĐỀ CƯƠng chi tiết bài giảNG



tải về 243.35 Kb.
trang1/3
Chuyển đổi dữ liệu21.12.2018
Kích243.35 Kb.
  1   2   3

BỘ MÔN DUYỆT

Chủ nhiệm Bộ môn

Phan Nguyên Hải



ĐỀ CƯƠNG CHI TIẾT BÀI GIẢNG

(Dùng cho 45 tiết giảng)

Học phần: Ngôn ngữ lập trình 2 – DotNet

Nhóm môn học: Cơ sở ngành (Kỹ thuật lập trình)

Bộ môn: Công nghệ phần mềm

Khoa (Viện): Công nghệ Thông tin


Thay mặt nhóm môn học

Phan Việt Anh




Thông tin về nhóm môn học

TT

Họ tên giáo viên

Học hàm

Học vị

Đơn vị công tác (Bộ môn)

1

Hồ Nhật Quang

GV

Ths

Công nghệ phần mềm

2

Phan Việt Anh

GV

Ths

Công nghệ phần mềm

3

Cao Tuấn Anh

TG

KS

Công nghệ phần mềm

Thời gian, địa điểm làm việc: Bộ môn Công nghệ phần mềm, khoa Công nghệ Thông tin.

Điện thoại, email: 069 515 338 bmcnpmmta@yahoo.com


Bài giảng 1: Các khái niệm cơ bản

Chương 1: Mục 1.1 + 1.2

Tiết thứ: 1 - 3 Tuần thứ: 1

- Mục đích, yêu cầu:

+ Nắm được ý nghĩa, yêu cầu, các nội dung của môn học.

+ Nắm được cấu trúc của một chương trình C# đơn giản.

+ Nắm được cách sử dụng IDE của Visual Studio để soạn thảo, biên dịch và thực thi chương trình.

+ Nắm được các kiểu dữ liệu cơ bản trong C# và .NetFramework, chuyển đổi giữa các kiểu dữ liệu.

+ Viết chương trình nhập, xuất dữ liệu, thực hiện một số toán tử toán học, hiển thị kiểu dữ liệu ngày giờ, thao tác với xâu ký tự.



- Hình thức tổ chức dạy học: Lý thuyết, thảo luận, tự học, tự nghiên cứu

- Thời gian: Lý thuyết, thảo luận: 3 tiết; Tự học, tự nghiên cứu: 3 tiết

- Địa điểm: Giảng đường do P2 phân công.

- Nội dung chính:

1.1. Các khái niệm cơ bản (1 tiết)

  • Giới thiệu Microsoft.Net

+ Các ngôn ngữ được hỗ trợ trong Visual Studio.NET : C/C++ (thông qua Visual C++), VisualBasic.NET, C#.NET, F# (từ VS2010), …

+ Gồm có 2 thành phần chính: Framework và Integrated Development Environment (IDE).

+ Framework là cốt lõi quan trọng nhất của môi trường .NET. IDE chỉ là công cụ để phát triển trên nền tảng đó. Trong .NET cả C++, C#, Visual Basic đều dùng chung 1 IDE.

+ .NET Framework có hai thành phần chính: Common Language Runtime (CLR) và thư viện lớp .NET Framework



  • Tính năng của bộ VS.NET

+ Xây dựng được đa dạng các ứng dụng: Web, mobile phone, Windows Form, giao tiếp với phần cứng, …

  • Không gian tên (namespace)
    + Ý nghĩa của việc dùng không gian tên (namespace)

+ Sử dụng các thành phần trong namespace, từ khóa using:

+ Cú pháp :

using tên namespace;

using bí danh = tên namespace;



  • Cấu trúc của chương trình C#

+ Cấu trúc vật lý, logic của một chương trình trong C#: Solution, Project, File.

+ Hàm Main (điểm bắt đầu của chương trình) có tham số, không có tham số



  • Biên dịch và thực thi chương trình

  • Kiểu dữ liệu, từ khoá, định danh, biến, hằng…

+ Kiểu số nguyên (C#/ .NetFramework): byte/Byte, sbyte/Sbyte, short/Int16, ushort/Uint16, int/Int32, unit/Uint32, long/Int64, ulong/ Uint64

+ Kiểu số thực dấu phảy động (C#/ .NetFramework): float /Single, double /Double, decimal /Decimal.

+ Kiểu ký tự, xâu ký tự (C#/ .NetFramework): char/Char, string/String.

+ Kiểu thời gian (C#/ .NetFramework): Datetime/ Datetime

+ Kiểu logic (C#/ .NetFramework): bool/ Boolean

+ Kiểu đối tượng (C#/ .NetFramework): object/Object



  • Nhập/ xuất dữ liệu

+ Nhập liệu: Hàm ReadLine, ReadKey

+ Xuất dữ liệu ra màn hình: Hàm Write, WriteLine.



  • Các toán tử

+ Các toán tử một ngôi: [], ++, --, typeof, ..

+ Toán tử hai ngôi: +, -, *, …

+ Toán tử dịch bít: >>, <<

+ Toán tử so sánh và kiểm tra kiểu dữ liệu: >, <, >=, <=, is, as,…

+ Toán tử logic: &&, ||, …

+ Toán tử điều kiện ?:

+ Toán tử gán: +=, -=, *=, …

+ Thứ tự tiên giữa các toán tử.

+ Các hàm toán học trong lớp System.Math: Abs, Sin, Cos, Tan, Tan2, Pow, Sqrt, ….


  • Chuyển đổi giữa các kiểu dữ liệu

+ Toán tử chuyển kiểu tường minh và ngầm định.

+ Chuyển kiểu dữ liệu bất kỳ thành kiểu xâu, dùng phương thức ToString.

+ Chuyển kiểu xâu thành kiểu số, dùng phương thức Parse hoặc TryParse.

+ Chuyển đổi kiểu dữ liệu dùng các hàm của lớp System.Convert: ToDateTime - Chuyển một giá trị về kiểu ngày giờ, ToInt16 – Chuyển về kiểu Short, ToInt32 – Chuyển về kiểu int, ToInt64 – Chuyển về kiểu long, …



  • Các cấu trúc điều khiển

+ Cấu trúc rẽ nhánh: if … else

+ Cú pháp switch … case

+ Cấu trúc lặp for

+ Cấu trúc lặp while, do …while

+ Các lệnh nhảy return, goto, break, continue.


  • Chú thích

+ Chú thích một dòng //

+ Chú thích nhiều dòng /* */



1.2. Thao tác dữ liệu (2 tiết)

- Kiểu dữ liệu mảng

+ Khái niệm: Mảng là một tập hợp có thứ tự của những đối tượng, tất cả các đối tượng này cùng một kiểu. Mảng trong C# là một đối tượng.

+ Mảng một chiều

+ Khởi tạo mảng một chiều

int[] myIntArray = new int [5];

int[] myIntArray = new int[5] { 2, 4, 6, 8, 10};

int[] myIntArray = { 2, 4, 6, 8, 10}; // Tập các giá trị

+ Mảng nhiều chiều: mảng nhiều chiều vuông và mảng nhiều chiều không vuông (jagged).

+ Các phương thức, thuộc tính thường dùng của mảng: Length, GetLength.

+ Truy cập các phần tử của mảng, toán tử chỉ mục []

- Kiểu dữ liệu xâu ký tự

+ Tạo giá trị một xâu.

+ Các ký tự escape là các ký tự đặc biệt, bắt đầu bằng dấu \. Ví dụ \n - xuống dòng, \t – dấu tab.

+ Muốn một số ký tự đặc biệt (\, “, …) là ký tự trong xâu thì phải có ký tự \ đứng trước nó. Ví dụ muốn có xâu "Khoa CNTT thì phải viết "\"Khoa CNTT".

+ Ký tự @ đặt trước giá trị mỗi xâu để xác định đó là xâu nguyên mẫu. Ví dụ: @” C:\Program Files\Visual Studio” bằng với “C:\Program Files\\Visual Studio”

+ Các phương thức, thuộc tính thường dùng của xâu: Format ,Chars ,Length ,Clone ,CompareTo , CopyTo, EndsWidth , Insert , LastIndexOf , PadLeft , …

+ Sử dụng StringBuilder để thao tác chuỗi hiệu quả.

- Kiểu dữ liệu ngày giờ

+ Tạo kiểu ngày giờ từ chuỗi.

+ Sử dụng cấu trúc TimeSpan để thực hiện các phép toán cộng, trừ, so sánh ngày giờ.

- Yêu cầu SV chuẩn bị:

Đọc trước tài liệu [1] tập 1, tài liệu 4 từ trang 7 - 211


Bài giảng 2: Lập trình hướng đối tượng trong C#

Chương 2, mục 2.1 + 2.2 + 2.3 + 2.4

Tiết thứ: 4 - 6 Tuần thứ: 2

- Mục đích, yêu cầu:

+ Nắm được khái niệm lớp, đối tượng. Phương pháp xây dựng khoa học một lớp.

+ Nắm được cách viết hàm tạo có tham số, không có tham số, hàm tạo static, hàm hủy, các trường hợp nên viết hàm hủy cho lớp.

+ Nắm được cách sử dụng thuộc tính, indexer và hiểu được tính đóng gói khi sử dụng thuộc tính (Property).

+ Nắm được ý nghĩa, phương pháp của nạp chồng toán tử, nạp chồng phương thức. Viết nạp chồng các toán tử toán học cho lớp số phức (hoặc phân số, ma trận, đa thức)

- Hình thức tổ chức dạy học: Lý thuyết, thảo luận, tự học, tự nghiên cứu

- Thời gian: Lý thuyết, thảo luận: 3 tiết; Tự học, tự nghiên cứu: 3 tiết

- Địa điểm: Giảng đường do P2 phân công.

- Nội dung chính:

2.1. Lớp và đối tượng + 2.2. Phương thức (1 tiết)

- Khái niệm về lớp và đối tượng.

- Các thành phần của lớp: biến thành viên + phương thức.

- Hàm tạo (Constructor):

+ Khái niệm: hàm tạo là một phương thức đặc biệt của lớp, dùng để tạo một đối tượng mới. Chương trình sẽ cấp phát bộ nhớ cho đối tượng sau đó gọi đến hàm tạo.

+ Được gọi tại thời điểm một đối tượng của lớp được tạo.

+ Contructor dùng để khởi tạo các biến thành viên của lớp.



- Đặc điểm hàm tạo:

+ Tên hàm tạo bắt buộc trùng tên lớp.

+ Không có giá trị trả về tường minh.

+ Không cho kế thừa.



- Hàm tạo static:

+ Đặc điểm:

Hàm tạo static được dùng để khởi tạo các biến của lớp hoặc thực hiện hành động cụ thể chỉ một lần.

Không có tham số, không sử dụng bất kỳ từ khóa định nghĩa truy cập nào.

Cú pháp:

class

{

static ()



{

// Mã lệnh của hàm tạo static

}

}

- Từ khóa định nghĩa truy cập public, internal, protected, private.



- Từ khóa this: đề cập đến đối tượng hiện tại của lớp, các hàm thành viên tĩnh không có con trỏ this. Con trỏ this được dùng trong constructor, phương thức, thuộc tính, indexer.

- Từ khóa static: Thành viên static thuộc về kiểu của chính lớp đó, không thuộc về một đối tượng cụ thể. Định nghĩa static có thể được sử dụng với classes, fields, methods, properties, operators, events, và constructors, nhưng không được sử dụng với indexers, destructors hoặc các dạng khác ngoài lớp.

- Hàm hủy (Destructor):

+ Được gọi bởi bộ thu rác (Garbage Collector) trong C#.

+ Garbage Collector giải phóng bộ nhớ bằng cách hủy các đối tượng không cần sử dụng hoặc tham chiếu đến nó.

+ Destructors không thể nạp chồng hoặc kế thừa.

+ Destructors không được gọi tường minh.

+ Không chứa tham số, và từ khóa định nghĩa truy cập.

- Truyền tham số

+ Truyền tham trị

+ Truyền tham chiếu sử dụng từ khóa ref, out

+ Truyền tham số kiểu mảng sử dụng từ khóa params.



2.3. Thuộc tính (1 tiết)

- Khái niệm thuộc tính (Property): Thuộc tính cho phép truy cập các thành phần dữ liệu bên trong lớp thay vì thông qua truy cập qua các biến thành viên.

- Cú pháp:

Tên thuộc tính

{

get // Lấy giá trị



{ // Các lệnh của phương thức get

}

set //‘ Thiết lập dữ liệu



{ // Các lệnh của phương thức set

}

}



Phương thức get được gọi khi đọc giá trị từ thuộc tính

Phương thức set được gọi khi gán giá trị cho thuộc tính. Từ khóa value là giá trị được gán cho thuộc tính.



- Khái niệm indexer: Sử dụng indexer cho phép tạo một lớp có hành động giống như “mảng ảo”. Đối tượng của lớp có thể dùng toán tử chỉ mục [] để truy nhập các thuộc tính của nó.

- Cú pháp

[từ khóa truy cập] this[int id1, int id2, …]

// các chỉ mục id1, id2, … là kiểu nguyên (int, long).

{

get



{

// các lệnh trong get

}

set


{

// các lệnh trong set

}

}

Kiểu dữ liệu các chỉ mục id1, id2, … là kiểu số nguyên.



2.4. Nạp chồng toán tử (1 tiết)

- Ý nghĩa: Nạp chồng toán tử cho phép người dùng định nghĩa các phép toán cho lớp hoặc cấu trúc.

- Cú pháp:

public static operator (các ngôi của toán tử)

{

// các lệnh thực hiện phép toán



}

- Các toán tử có thể nạp chồng, các toán tử không được phép nạp chồng.

- Định nghĩa toán tử chuyển kiểu tường minh (explicit), ngầm định (implicit)

- Yêu cầu SV chuẩn bị:

Đọc trước tài liệu [1] chương 1, 2, 3, 4.

Tự làm bài tập giáo viên giao cuối chương 2.
Bài giảng 3: Lập trình hướng đối tượng trọng C# (Tiếp)

Chương 2, mục 2.5 + 2.6

Tiết thứ: 7 - 9 Tuần thứ: 3

- Mục đích, yêu cầu:

+ Nắm được ý nghĩa, các trường hợp áp dụng kế thừa, cú pháp khai báo kế thừa.

+ Nắm được gọi Contructor, các phương thức, thuộc tính của lớp cơ sở.

+ Nắm được các từ khóa để nghiêm cấm kế thừa (sealed), ghi đè phương thức, thuộc tính (virtual và override).

+ Nắm được mục đích sử dụng giao diện (interface) và lớp trừu tượng (abstract class) trong thiết kế chương trình.

+ Nắm được phương pháp hiện thực một số giao diện thông dụng: : khả liệt kê (IEnumerable), khả so sánh (IComparable), khả tuần tự (ISerializable), khả sao chép (IClonableable)



- Hình thức tổ chức dạy học: Lý thuyết, thảo luận, tự học, tự nghiên cứu

- Thời gian: Lý thuyết, thảo luận: 3 tiết; Tự học, tự nghiên cứu: 3 tiết.

- Địa điểm: Giảng đường do P2 phân công.

- Nội dung chính:

2.5. Kế thừa và đa hình (1 tiết)

- Ý nghĩa của kế thừa

+ Có thể xây dựng lớp mới dựa trên lớp đã xây dựng trên lớp trước đó. Kế thừa dựa trên quan hệ is – a. Lớp kế thừa có thể thừa hưởng những phương thức, thuộc tính của lớp cha.

+ Làm tăng năng suất, giảm độ phức tạp khi bảo trì và khi phát triển.

- Khai báo kế thừa

- Gọi Constructor của lớp cơ sở

+ Lớp con (dẫn xuất) không được kế thừa hàm tạo của lớp cha (cơ sở).

+ Có hai giải pháp gọi constructor của lớp cơ sở

Sử dụng constructor mặc định

Gọi constructor của lớp cơ sở một cách tường minh. Từ khóa base được sử dụng để gọi các phương thức, thuộc tính của lớp cha.

Ví dụ:


class BaseClass

{ private string strPath;

public BaseClass()

{ strPath = "C:\\"; }

public BaseClass(string Path)

{ strPath = Path; }

}

class CallConstructorOfBaseClass : BaseClass



{ private string stPath1;

public CallConstructorOfBaseClass() : base("D:\\")

{}

public CallConstructorOfBaseClass(string Path) : base()



{stPath1 = Path ; }

}

- Nghiêm cấm kế thừa (từ khóa sealed)

+ Dùng từ khóa sealed trong khai báo để tạo lớp không cho phép kế thừa

+ Dùng từ khóa sealed trong khai báo phương thức để tạo phương thức không cho phép kế thừa.



- Gọi lớp cơ sở (từ khóa base)

- Ghi đè (từ khóa virtual và override)

+ Từ khóa override cho phép xây dựng lại phương thức, thuộc tính, indexer, sự kiện được kế thừa từ lớp cha.

+ Lớp con chỉ có thể ghi đè được phương thức mà lớp cha cho phép ghi đè: các phương thức khai báo với từ khóa virtual hoặc abstract

- Chuyển đổi kiểu dữ liệu từ lớp dẫn xuất thành lớp cơ sở, tính đa hình.

Ví dụ:

class A
        {


              public void Foo() { Console.WriteLine("A::Foo()"); }
        }

        class B : A


        {
              public void Foo() { Console.WriteLine("B::Foo()"); }
        }

        class Test


        {
            static void Main(string[] args)
            {
                A a;
                B b;

                a = new A();


                b = new B();
                a.Foo();  // kết quả trên màn hình --> "A::Foo()"
                b.Foo();  // kết quả trên màn hình --> "B::Foo()"

                a = new B();


                a.Foo();  // kết quả trên màn hình --> "A::Foo()"
            }
        }

2.6. Lớp trừu tượng và giao diện (2 tiết)

- Lớp trừu tượng (abstract class)

+ Lớp trừu tượng đơn giản được xem như một class cha cho tất cả các Class có cùng bản chất.

+ Mỗi lớp dẫn xuất (lớp con) chỉ có thể kế thừa từ một lớp trừu tượng.

+ Lớp trừu trượng không cho phép tạo đối tượng trực tiếp từ nó, chỉ tạo được đối tượng qua hàm tạo của lớp con.

+ Các phương thức abstract của lớp trừu tượng không có phần thân

- Giao diện (Interface)

+ Interface được xem như một mặt nạ cho tất cả các Class cùng cách thức hoạt động nhưng có thể khác nhau về bản chất

+ Interface chỉ định nghĩa các events, indexers, methods hoặc properties.

+ Các lớp hoặc struct có thể đa kế thừa từ interface.

+ Tất cả các lớp (hoặc struct) kế thừa từ interface đều phải thực thi toàn bộ các thành viên trong interface.

+ Không tạo đối tượng trực tiếp từ interface.



- Ý nghĩa của giao diện.

- Xây dựng lớp cài đặt giao diện

- Các giao diện thông dụng trong .NetFramework:

+ Khả liệt kê (IEnumerable): hỗ trợ dùng vòng lặp foreach để duyệt các phần tử trong tập hợp.

+ Khả so sánh (IComparable): System.Collections.IComparer: Cung cấp cơ chế so sánh kiểu tùy biến, cho bạn dễ dàng sắp xếp mảng đối tượng này

+ Khả tuần tự (Serializable): System.Runtime.Serialization.ISerializable: có thể dễ dàng lưu trữ vào đĩa, truyền qua mạng hoặc chuyển giá trị qua lại giữa các miền ứng dụng

+ Khả sao chép (IClonableable): System.ICloneable: Cung cấp cơ chế tạo bản sao cho các đối tượng của lớp

- Yêu cầu SV chuẩn bị:

Đọc trước tài liệu [1] chương 5, 6

Đọc tài liệu [4] từ trang 357 - 473

Tự làm bài tập cuối chương 2.


Bài giảng 4: Lập trình hướng đối tượng trong C# - Bài tập

Tiết thứ: 10 - 12 Tuần thứ: 4



- Mục đích, yêu cầu:

+ Nắm chắc các kiến thức về lập trình hướng đối tượng.

+ Làm các bài tập cuối chương 2.

- Hình thức tổ chức dạy học: Lý thuyết, thảo luận, tự học, tự nghiên cứu

- Thời gian: Lý thuyết, thảo luận: 0; Bài tập: 3 tiết Tự học, tự nghiên cứu: 3 tiết

- Địa điểm: Giảng đường do P2 phân công.

- Nội dung chính:

+ Làm các bài tập xây dựng lớp,.

+ Xây dựng các lớp có quan hệ kế thừa.

+ Xây dựng lớp kế thừa giao diện khả tuần tự hóa, giao diện khả so sánh, sắp xếp mảng các đối tượng theo các tiêu chí khác nhau.

+ Xây dựng lớp kế thừa giao diện khả sao chép.

- Yêu cầu SV chuẩn bị:

+ Nắm chắc lý thuyết chương 2.

+ Làm các bài tập giáo viên giao về nhà.
Bài giảng 5: Cấu trúc dữ liệu trong C# + Bài tập

Chương 3, mục 3.1 + 3.2

Tiết thứ: 13 - 15 Tuần thứ: 5

- Mục đích, yêu cầu:

+ Nắm được cách sử dụng một số kiểu cấu trúc dữ liệu trong C#: Danh sách liên kết, mảng động ArrayList, ngăn xếp (stack), hàng đợi (Queue)

+ Nắm được ý nghĩa, phương pháp lập trình tổng quát.

+ Xây dựng ví dụ lớp tổng quát



- Hình thức tổ chức dạy học: Lý thuyết, bài tập, thảo luận, tự học, tự nghiên cứu

- Thời gian: Lý thuyết, thảo luận: 2 tiết; Bài tập: 1 tiết Tự học, tự nghiên cứu: 3 tiết

- Địa điểm: Giảng đường do P2 phân công.

- Nội dung chính:

3.1. Lập trình tổng quát trong C# (1 tiết)

- Giới thiệu lập trình tổng quát

+ Lập trình tổng quát là phương pháp lập trình mà trong đó kiểu dữ liệu không cần định nghĩa trước, sau đó nó sẽ được khởi tạo là kiểu dữ liệu cụ thể khi cần thiết.

- Lớp tổng quát (Generic Class)

- Phương thức tổng quát (Generic Method )

- Cấu trúc tổng quát (Generic Struct)



3.2. Một số cấu trúc dữ liệu trong C#(1 tiết)

- Danh sách liên kết

+ Lớp LinkedList trong namespace System.Collections.Generics dùng để biểu diễn danh sách liên kết (danh sách liên kết đơn và kép).

+ Mỗi node trong LinkedList có kiểu là LinkedListNode.

+ Các thuộc tính của LinkedListNode



LinkedListNode(value)<(Of <<><> >)>

Hàm tạo, tạo LinkedListNode chứa giá trị cho trước.

List

Trả về danh sách liên kết chứa node hiện tại.

Next

Trả về node tiếp theo của danh sách liên kết

Previous

Trả về node phía trước của danh sách liên kết

Value

Trả về giá trị đang lưu trữ trong node.


  1   2   3


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©tieuluan.info 2017
được sử dụng cho việc quản lý

    Quê hương