Tìm hiểu C # cho Android phần 2: Các lớp và vòng lặp

Tác Giả: John Stephens
Ngày Sáng TạO: 24 Tháng MộT 2021
CậP NhậT Ngày Tháng: 1 Tháng BảY 2024
Anonim
Tìm hiểu C # cho Android phần 2: Các lớp và vòng lặp - ỨNg DụNg
Tìm hiểu C # cho Android phần 2: Các lớp và vòng lặp - ỨNg DụNg

NộI Dung


Trong phần một của loạt bài hướng dẫn Android về học C # này, chúng tôi đã xem xét những điều cơ bản tuyệt đối về lập trình C #. Chúng tôi đã trình bày các phương thức (các nhóm mã thực hiện các tác vụ cụ thể), một số cú pháp cơ bản (chẳng hạn như nhu cầu bán dấu hai chấm), các biến (bộ chứa lưu trữ dữ liệu) và, nếu các câu lệnh để kiểm soát luồng (mã phân nhánh phụ thuộc vào các giá trị của các biến). Chúng ta cũng đã thấy làm thế nào để truyền các biến như chuỗi dưới dạng đối số giữa các phương thức.

Bạn nên quay lại và xem xét điều đó nếu bạn đã đọc nó.

Tại thời điểm này, bạn sẽ có thể tạo một số ứng dụng bảng điều khiển cơ bản, như câu đố, ứng dụng lưu trữ dữ liệu hoặc máy tính.


Trong phần hai, chúng tôi sẽ có một chút tham vọng hơn, bao gồm một số điều cơ bản hơn - như các vòng lặp - và khám phá cách tạo và tương tác với các lớp. Điều đó có nghĩa là chúng tôi sẽ có thể bắt đầu thực hiện phát triển Android và xem cách thu hẹp khoảng cách đó. Tiếp tục đọc nếu bạn muốn thực sự học C #!

Hiểu các lớp và lập trình hướng đối tượng

Tóm lại trong phần một, chúng tôi đã giải thích các khái niệm cơ bản về lập trình hướng đối tượng, xoay quanh các ngôn ngữ sử dụng các lớp lớp Cameron để mô tả các đối tượng của Google. Một đối tượng là một phần dữ liệu, có thể đại diện cho nhiều thứ. Nó có thể là một đối tượng theo nghĩa đen trong một thế giới trò chơi như mùa xuân, hoặc nó có thể là một thứ gì đó trừu tượng hơn, giống như một người quản lý xử lý điểm số của người chơi.


Một lớp duy nhất có thể tạo nhiều đối tượng. Vì vậy, bạn có thể viết một lớp kẻ thù của người Viking, nhưng có thể tạo ra toàn bộ cấp độ của kẻ xấu. Đây là một trong những lợi ích lớn của việc sử dụng lập trình hướng đối tượng. Mặt khác, cách duy nhất để xử lý hành vi của vô số kẻ thù là sử dụng nhiều phương pháp riêng lẻ, mỗi phương pháp đều chứa các hướng dẫn về cách kẻ xấu nên cư xử trong các trường hợp khác nhau.

Nếu điều này vẫn còn một chút khó khăn để có được đầu óc của bạn, tất cả những gì bạn thực sự cần biết là các đối tượng có các thuộc tính và hành vi. Điều này giống như các đối tượng thực sự. Chẳng hạn, một con thỏ có các thuộc tính như kích thước, màu sắc và tên; và nó có những hành vi, như nhảy, ngồi và ăn. Về cơ bản, các thuộc tính là các biến và hành vi là các phương thức.

Chương trình chúng tôi xây dựng trong bài học cuối cùng cũng là một ví dụ về một lớp học. Đối tượng của người Viking, chúng tôi mô tả ở đây là một số loại hệ thống kiểm soát mật khẩu. Thuộc tính mà nó có là chuỗi UserName và hành vi của nó là NewMethod (kiểm tra tên của người dùng và chào họ).

Nếu đóvẫn hơi khó hiểu, cách duy nhất để có được đầu óc của chúng ta là tạo ra một hoặc hai lớp mới!

Tạo một lớp mới

Nếu bạn học tiếng C #, bạn cần biết cách tạo lớp mới. May mắn thay, điều này là rất dễ dàng. Chỉ cần nhấp vào mục menu Project và sau đó chọn ăn + Thêm lớp.

Chọn loại C Cồng và gọi nó là Thỏ Thỏ. Chúng tôi sẽ sử dụng lớp này để tạo ra những con thỏ có khái niệm. Bạn sẽ thấy những gì tôi muốn nói trong giây lát.

Nếu bạn kiểm tra Solution Explorer ở bên phải, bạn sẽ thấy rằng một tệp mới có tên Rabbit.cs đã được tạo ngay bên dưới Program.cs. Hoàn thành tốt - đó là một trong những điều quan trọng nhất cần biết nếu bạn muốn học C # cho Android!

Tệp Rabbit.cs mới có một số mã nồi hơi giống như nồi hơi giống như trước đó. Nó vẫn thuộc cùng một không gian tên và nó có một lớp có cùng tên với tệp.

không gian tên ConsoleApp2 {class Rabbit {}}

Bây giờ chúng tôi sẽ cung cấp cho thỏ của chúng tôi một số thuộc tính với cái mà chúng tôi gọi là công cụ xây dựng.

Hàm tạo là một phương thức trong một lớp khởi tạo đối tượng, cho phép chúng ta xác định các thuộc tính của nó khi chúng ta tạo nó lần đầu tiên. Trong trường hợp này, đây là những gì chúng tôi sẽ nói:

không gian tên ConsoleApp2 {class Rabbit {chuỗi công khai RabbitName; chuỗi công cộng RabbitColor; công cộng RabbitAge; công cộng thỏ Rabbitight; Thỏ công cộng (Tên chuỗi, Màu chuỗi, tuổi int, int weight) {RabbitName = name; RabbitColor = màu; RabbitAge = tuổi; Rabbit Weight = trọng lượng; }}}

Điều này cho phép chúng ta tạo ra một con thỏ mới từ một lớp khác và xác định các thuộc tính của nó như chúng ta làm:

Rabbit Rabbit1 = new Rabbit (Chăm Jeff,, nâu nâu, 1, 1);

Bây giờ tôi nhận ra trong trọng lượng hồi tưởng có lẽ nên là một số float hoặc gấp đôi để cho phép số thập phân, nhưng bạn có ý tưởng. Chúng tôi sẽ làm tròn con thỏ của chúng tôi đến số nguyên gần nhất.

Bạn sẽ thấy khi bạn viết con thỏ của mình ra, bạn sẽ được nhắc thông qua các đối số chính xác. Theo cách này, lớp của bạn đã trở thành một phần của mã.

Tin hay không, mã này đã tạo ra một con thỏ! Bạn có thể nhìn thấy con thỏ của bạn bởi vì chúng tôi không có đồ họa, nhưng nó ở đó.

Và để chứng minh, bây giờ bạn có thể sử dụng dòng này:

Console.WriteLine (Rabbit1.RmusName);

Điều này sau đó sẽ cho bạn biết tên của con thỏ bạn vừa tạo!

Chúng ta cũng có thể tăng trọng lượng của Thỏ, như vậy:

Rabbit1.Rợi trọng ++; Console.WriteLine (Rabbit1.RmusName + "weight" + Rabbit1.Rmus Weight + "kg");

Lưu ý ở đây rằng việc thêm vào ++ ++ vào cuối một thứ gì đó sẽ tăng dần giá trị của nó lên một (Bạn cũng có thể viết chú thỏ Rabbitightight = Rabbitweight + 1)).

Bởi vì lớp học của chúng tôi có thể tạo ra nhiều thỏ như chúng tôi muốn, chúng tôi có thể tạo ra rất nhiều thỏ khác nhau, mỗi thỏ có thuộc tính riêng.

Thêm hành vi

Sau đó chúng tôi cũng có thể chọn cho thỏ của chúng tôi một số hành vi. Trong trường hợp này, hãy để cho chúng ăn.

Để làm điều này, chúng tôi sẽ tạo ra một phương pháp công khai gọi là Ăn Eat, và điều này sẽ tạo ra âm thanh ăn, đồng thời tăng dần trọng lượng của thỏ:

công khai void Eat () {Console.WriteLine (RabbitName + ": Nibble nibble!"); Rabbit Weight ++; }

Hãy nhớ rằng, công cộng có nghĩa là có thể truy cập từ bên ngoài lớp học và và void void có nghĩa là phương thức này không trả về bất kỳ dữ liệu nào.

Sau đó, từ bên trong Program.cs, chúng ta sẽ có thể gọi phương thức này và điều này sẽ khiến con thỏ mà chúng ta lựa chọn ăn và lớn hơn:

Console.WriteLine (Rabbit1.RmusName + "weight" + Rabbit1.Rmus Weight + "kg"); Thỏ1.Eat (); Thỏ1.Eat (); Thỏ1.Eat (); Console.WriteLine (Rabbit1.RmusName + "weight" + Rabbit1.Rmus Weight + "kg");

Điều đó sẽ khiến Jeff ăn ba lần, sau đó chúng tôi sẽ nghe thấy và có thể thấy anh ta đã lớn hơn! Nếu chúng tôi có một con thỏ khác ở hiện trường, chúng cũng có thể ăn!

Console.WriteLine (Rabbit1.RmusName + "weight" + Rabbit1.Rmus Weight + "kg"); Console.WriteLine (Rabbit2.RmusName + "weight" + Rabbit2.Rmus Weight + "kg"); Thỏ1.Eat (); Thỏ1.Eat (); Thỏ2.Eat (); Thỏ2.Eat (); Thỏ1.Eat (); Console.WriteLine (Rabbit1.RmusName + "weight" + Rabbit1.Rmus Weight + "kg"); Console.WriteLine (Rabbit2.RmusName + "weight" + Rabbit2.Rmus Weight + "kg");

Ở đó như thỏ

Đây là một cách đặc biệt tao nhã để xử lý nhiều đối tượng, vì chúng ta cần phải viết ra các lệnh cho từng con thỏ một cách thủ công và có thể tăng động số lượng thỏ theo cách chúng ta muốn. Chúng tôi không chỉ muốn học C # - chúng tôi muốn học cách viết mã C # sạch!

Đây là lý do tại sao chúng tôi có thể sử dụng một danh sách. Một danh sách là một bộ sưu tập; biến chính nó về cơ bản chứa các tham chiếu đến các biến khác. Trong trường hợp này, chúng tôi có thể lập danh sách Thỏ và tin tốt là điều này rất dễ hiểu:

Danh sách RabbitList = Danh sách mới(); RabbitList.Add (Rabbit mới ("Jeff", "brown", 1, 1)); RabbitList.Add (Rabbit mới ("Sam", "trắng", 1, 2));

Điều này tạo ra con thỏ mới như trước đây, nhưng đồng thời thêm con thỏ vào danh sách. Tương tự, chúng ta có thể nói điều này:

Thỏ Thỏ3 = Thỏ mới ("Jonny", "cam", 1, 1); RabbitList.Add (Rabbit3);

Dù bằng cách nào, một đối tượng đã được tạo và thêm vào danh sách.

Chúng tôi cũng có thể trả lại thông tin một cách thuận tiện và thanh lịch từ danh sách thỏ của chúng tôi theo cách này:

foreach (var Rabbit in RabbitList) {Console.WriteLine (Rabbit.RmusName + "weight" + Rabbit.Rmus Weight + "kg"); }

Như bạn có thể hiểu, ra foreach, có nghĩa là bạn lặp lại một bước cho mỗi mục trong danh sách. Bạn cũng có thể lấy thông tin từ danh sách của bạn như thế này:

RabbitList.Eat ();

Ở đây, 1 số 1 là chỉ mục, nghĩa là bạn đang đề cập đến thông tin được lưu trữ ở vị trí số một. Khi nó xảy ra, đó thực sự là thứ hai thỏ bạn đã thêm mặc dù: bởi vì danh sách trong lập trình luôn bắt đầu từ 0.

Trong trường hợp bạn đã đoán được, chúng tôi sẽ sử dụng tất cả thông tin này để tạo ra một chuỗi Fibonacci. Rốt cuộc, nếu bạn đang học C # cho Android, bạn sẽ có thể thực sự làm điều gì đó thú vị với tất cả lý thuyết đó!

Trong chuỗi Fibonacci, thỏ bị nhốt trong phòng và để lại sinh sản. Chúng có thể sinh sản sau một tháng, tại thời điểm chúng trưởng thành về mặt tình dục (tôi không thể xác nhận nếu đây là sinh học chính xác của Thỏ). Nếu mỗi cặp vợ chồng thỏ có thể sản xuất một lần mỗi tháng kể từ đó trở đi, sinh ra hai con con, thì đây là chuỗi như thế nào:

1,1,2,3,5,8,13,21,34

Thật kỳ diệu, mỗi số trong chuỗi là giá trị của hai số trước đó được cộng lại với nhau. Theo khoa học, đây là một vấn đề lớn.

Điều thú vị là, chúng ta có thể tái tạo điều đó.

Đầu tiên, chúng ta cần giới thiệu một khái niệm mới: vòng lặp. Điều này chỉ đơn giản lặp đi lặp lại cùng một mã cho đến khi một điều kiện được đáp ứng. Vòng lặp đối với các ứng dụng cho phép chúng ta thực hiện điều này bằng cách tạo một biến, đặt các điều kiện chúng ta muốn đáp ứng và sau đó vận hành trên nó - tất cả được xác định trong ngoặc:

for (int tháng = 0; tháng <100; tháng ++) {// Làm gì đó}

Vì vậy, chúng tôi đang tạo một số nguyên được gọi là tháng và lặp cho đến khi nó bằng 100. Sau đó, chúng tôi tăng số tháng lên một.

Bạn muốn xem làm thế nào điều này có thể trở thành một chuỗi Fibonacci? Kìa:

không gian tên ConsoleApp2 {Chương trình lớp {static void Main (string args) {List RabbitList = Danh sách mới(); RabbitList.Add (Rabbit mới ("Jeff", "brown", 0, 1)); RabbitList.Add (Thỏ mới ("Sam", "trắng", 0, 1)); for (int tháng = 0; tháng <10; tháng ++) {int firstRợi = 0; int timesToRep sinhe = 0; foreach (var Rabbit in RabbitList) {Console.Write ("R"); if (Rabbit.RmusAge> 0) {if (firstRmus == 0) {firstRmus = 1; } other {firstRợi = 0; timesToRep Giới thiệu ++; }} Rabbit.RmusAge ++; } for (int i = 0; i <timesToRep sinhe; i ++) {RabbitList.Add (new Rabbit ("NewBabyRmus", "brown", 0, 1)); RabbitList.Add (thỏ mới ("NewBabyRợi", "nâu", 0, 1)); Console.Write ("r"); Console.Write ("r"); } Console.WriteLine ("--- Có" + RabbitList.Count / 2 + "cặp thỏ!"); Console.WriteLine (""); } Console.WriteLine ("Tất cả đã hoàn tất!"); Bảng điều khiển.ReadKey (); }}}

Được rồi, đó là khó khăn hơn tôi nghĩ!

Tôi sẽ không trải qua tất cả những điều này, nhưng bằng cách sử dụng những gì bạn đã học được, bạn sẽ có thể đảo ngược nó.

Chắc chắn có nhiều cách thanh lịch hơn để làm điều này - Tôi không phải là nhà toán học. Tuy nhiên, tôi nghĩ rằng đó là một bài tập khá thú vị và một khi bạn có thể thực hiện nó, bạn đã sẵn sàng cho thời gian lớn.

Nhân tiện, tôi thích nhìn thấy bất kỳ cách tiếp cận nào khác!

Chúng ta sẽ đi đâu từ đây? Cách học C # cho Android

Với tất cả những kiến ​​thức dưới vành đai của bạn, bạn đã sẵn sàng bắt đầu vào những điều lớn hơn. Cụ thể, bạn đã sẵn sàng tham gia lập trình Android với C # trong Xamarin hoặc Unity.

Điều này khác biệt bởi vì bạn sẽ sử dụng các lớp được cung cấp bởi Google, Microsoft và Unity. Khi bạn viết một cái gì đó giống như Rig RigidBody2D.velocity, những gì bạn đang làm là truy cập vào một thuộc tính từ một lớp gọi là RigidBody2D. Điều này cũng hoạt động giống nhau, điểm khác biệt duy nhất là bạn có thể nhìn thấy RigidBody2D vì bạn đã tự mình xây dựng nó.

Với C # này trong vành đai của bạn, bạn sẽ sẵn sàng nhảy vào một trong hai tùy chọn này và có một khởi đầu lớn khi hiểu được những gì diễn ra:

  • Cách tạo một ứng dụng Android với Xamarin
  • Xây dựng trò chơi Android đầu tiên của bạn sau 7 phút với Unity

Trong một bài học sắp tới, chúng tôi cũng sẽ xem xét cách bạn có thể quay đầu và sử dụng điều này để xây dựng các ứng dụng Windows thay thế!

Một trăm tám megapixel! Đó là một con ố khổng lồ cho bất kỳ máy ảnh nào, không chỉ cảm biến được đóng gói bên trong Xiaomi Mi Note 10. Với độ phân giả...

Mi Note 10, còn được gọi là Mi CC9 Pro tại Trung Quốc, ẽ ra mắt tại châu Âu vào ngày 6 tháng 11. Xiaomi đã không tiếc công ức trong việc quảng bá...

ẤN PhẩM CủA Chúng Tôi