Android bölüm 2 için C # öğrenin: Sınıflar ve döngüler

Yazar: John Stephens
Yaratılış Tarihi: 24 Ocak Ayı 2021
Güncelleme Tarihi: 1 Temmuz 2024
Anonim
Android bölüm 2 için C # öğrenin: Sınıflar ve döngüler - Uygulamaların
Android bölüm 2 için C # öğrenin: Sınıflar ve döngüler - Uygulamaların

İçerik


C # öğrenmeye ilişkin bu Android öğretici serinin bir bölümünde, C # programlamanın mutlak temellerine baktık. Metotları (belirli görevleri yerine getiren kod grupları), bazı temel sözdizimlerini (yarı-kolonlara ihtiyaç duyulması gibi), değişkenleri (veri depolayan konteynerler) ve akış kontrolü için “if ifadeleri” (değerlere bağlı dallanma kodu) ele aldık değişkenlerin). Ayrıca, dizge gibi değişkenlerin yöntemler arasında argüman olarak nasıl geçirildiğini gördük.

Daha önce okumadıysanız, geri dönüp bir göz atmalısınız.

Bu noktada, sınavlar, veri depolayan uygulamalar veya hesap makineleri gibi bazı temel konsol uygulamaları yapabilmelisiniz.

İkinci bölümde biraz daha iddialı olacağız, biraz daha temel şeyleri (döngüler gibi) kapsayan ve sınıfları nasıl oluşturacağınızı ve etkileşime geçeceğinizi keşfedeceğiz. Bu, Android gelişiminde bir bıçak almaya başlayabileceğimiz ve bu boşluğu nasıl dolduracağımızı görebileceğimiz anlamına gelir. Gerçekten C # öğrenmek istiyorsanız okumaya devam edin!


Sınıfları ve nesne yönelimli programlamayı anlama

Birinci bölümde kısaca, “nesneleri” tanımlamak için “sınıfları” kullanarak dilleri etrafında dönen Nesneye Yönelik Programlamanın temellerini açıkladık. Nesne, birçok şeyi temsil edebilecek bir veri parçası. Bahar gibi bir oyun dünyasında gerçek bir nesne olabilir veya oyuncunun puanını kullanan bir menajer gibi daha soyut bir şey olabilir.

Tek bir sınıf birden fazla nesne oluşturabilir. Böylece bir “düşman” sınıfı yazabilirsiniz, ancak kötü adamlarla dolu bir seviye oluşturabilirsiniz. Bu, nesne yönelimli programlama kullanmanın en büyük yararlarından biridir. Aksi taktirde, çok sayıda düşmanın davranışını ele almanın tek yolu, her biri kötü adamın farklı koşullarda nasıl davranması gerektiğine dair talimatlar içeren çok sayıda bireysel yöntem kullanmak olacaktır.


Eğer kafanızı dolaştırmak biraz zorsa, gerçekten bilmeniz gereken tek şey nesnelerin özellik ve davranışları olduğudur. Bu sadece gerçek nesneler gibi. Örneğin, bir tavşan, boyut, renk ve ad gibi özelliklere sahiptir; ve zıplamak, oturmak ve yemek yemek gibi davranışları vardır. Temel olarak, özellikler değişken, davranışlar ise yöntemdir.

Son derste oluşturduğumuz program da bir sınıf örneğidir. Burada tarif ettiğimiz “nesne” bir tür şifre kontrol sistemidir. Sahip olduğu özellik, UserName dizesidir ve sahip olduğu davranış NewMethod'dur (kullanıcının adını kontrol eder ve selamlar).

Eğer öyleyseyine biraz kafa karıştırıcı, kafamızı dolaştırmanın tek yolu kendimiz için yeni bir sınıf yaratmak!

Yeni bir sınıf yaratmak

C # öğrenecekseniz, nasıl yeni sınıflar yapılacağını bilmeniz gerekir. Neyse ki, bu çok kolay. Sadece Proje menü öğesini tıklayın ve ardından “+ Sınıf Ekle” seçeneğini seçin.

“C #” seçin ve “Tavşan” olarak adlandırın. Bu sınıfı kavramsal tavşan oluşturmak için kullanacağız. Birazdan ne demek istediğimi anlayacaksın.

Sağda Solution Explorer’ınızı kontrol ederseniz, Program.cs’in hemen altında Rabbit.cs adlı yeni bir dosya oluşturulduğunu göreceksiniz. Aferin - bu Android için C # öğrenmek istiyorsanız bilmeniz gereken en önemli şeylerden biri!

Yeni Rabbit.cs dosyası, daha önce olduğu gibi aynı "kazan" kodunun bazılarına sahiptir. Hala aynı isim alanına aittir ve dosya ile aynı isimde bir sınıfa sahiptir.

namespace ConsoleApp2 {class Rabbit {}}

Şimdi tavşanımıza “yapıcı” dediğimiz şeylerle bazı özellikler vereceğiz.

Yapıcı, nesneyi ilk başlatan, özelliklerini tanımlamamıza izin veren, nesneyi başlatan sınıftaki bir yöntemdir. Bu durumda, şunu söyleyeceğiz:

namespace ConsoleApp2 {sınıf Tavşan {genel dize TavşanAdı; kamu dize RabbitColor; genel int RabbitAge; genel int TavşanAğırlık; genel Tavşan (Dize adı, Dize rengi, int yaş, int ağırlık) {RabbitName = name; RabbitColor = renk; RabbitAge = yaş; Tavşan Ağırlığı = ağırlık; }}}

Bu, farklı bir sınıftan yeni bir tavşan yaratmamızı ve özelliklerini şöyle tanımlamamızı sağlar:

Tavşan Tavşan1 = yeni Tavşan (“Jeff”, “kahverengi”, 1, 1);

Şimdi geçmişe bakıldığında ağırlığın büyük olasılıkla ondalık sayılar için bir şamandıra ya da iki katı olması gerektiğinin farkındayım. Tavşanı en yakın sayıya yuvarlayacağız.

Tavşanı yazarken göreceksin, doğru argümanları iletmen istenecek. Bu şekilde, sınıfınız neredeyse kodun bir parçası haline gelmiştir.

İster inanın ister inanmayın, bu kod bir tavşan yarattı! Tavşanı göremezsin çünkü grafiğimiz yok, ama işte orada.

Bunu kanıtlamak için şimdi bu satırı kullanabilirsiniz:

Console.WriteLine (Rabbit1.RabbitName);

Bu daha sonra yarattığınız tavşanın adını söyleyecektir!

Aynı şekilde Tavşanımızın ağırlığını da artırabiliriz:

Rabbit1.RabbitWeight ++; Konsol.WriteLine (Rabbit1.RabbitName + "tartılır" + Rabbit1.RabbitWeight + "kg");

Burada, bir şeyin sonuna “++” eklemenin değerini birer birer artıracağını unutmayın (Ayrıca “RabbitWeight = RabbitWeight + 1” yazabilirsiniz).

Sınıfımız istediğimiz kadar tavşan üretebildiği için, her biri kendi özelliklerine sahip çok sayıda farklı tavşan yaratabiliriz.

Davranış ekleme

O zaman tavşanımıza bir tür davranış göstermeyi de seçebiliriz. Bu durumda, yemek yemelerine izin verelim.

Bunu yapmak için “Yemek” adında ortak bir yöntem yaratacağız ve bu da tavşanın ağırlığını artan bir şekilde artırarak yeme sesi çıkarır:

public void Eat () {Console.WriteLine (RabbitName + ": Nibble nibble!"); RabbitWeight ++; }

Unutmayın, "public", sınıf dışından erişilebilir anlamına gelir ve "void", yöntemin hiçbir veri döndürmediği anlamına gelir.

Daha sonra, Program.cs içinden, bu metodu çağırabileceğiz ve bu bizim tercih ettiğimiz tavşanı yiyip büyütecek.

Konsol.WriteLine (Rabbit1.RabbitName + "tartılır" + Rabbit1.RabbitWeight + "kg"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit1.Eat (); Konsol.WriteLine (Rabbit1.RabbitName + "tartılır" + Rabbit1.RabbitWeight + "kg");

Bu Jeff'in üç kez yemesine neden olacak, o zaman onu duyacağız ve büyüdüğünü görebileceğiz! Sahnede başka bir tavşan daha olsaydı, onlar da yiyebilirdi!

Konsol.WriteLine (Rabbit1.RabbitName + "tartılır" + Rabbit1.RabbitWeight + "kg"); Konsol.WriteLine (Rabbit2.RabbitName + "tartılır" + Rabbit2.RabbitWeight + "kg"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit2.Eat (); Rabbit2.Eat (); Rabbit1.Eat (); Konsol.WriteLine (Rabbit1.RabbitName + "tartılır" + Rabbit1.RabbitWeight + "kg"); Konsol.WriteLine (Rabbit2.RabbitName + "tartılır" + Rabbit2.RabbitWeight + "kg");

Tavşan gibi

Bu, her tavşan için komutları manuel olarak yazmamız gerektiğinden ve istediğiniz sayıda tavşan sayısını dinamik olarak artıramayacağımızdan, birçok nesneyi ele almanın özellikle şık bir yolu değildir. Biz sadece C # öğrenmek istemiyoruz - temiz C # kodunu yazmayı öğrenmek istiyoruz!

Bu yüzden bir liste kullanabiliriz. Bir liste koleksiyondur; Temelde diğer değişkenlere referanslar içeren değişkenin kendisi. Bu durumda, Tavşanların bir listesini yapabiliriz ve iyi haber şu ki bunun anlaşılması çok kolay:

Liste RabbitList = yeni Liste(); RabbitList.Add (yeni Tavşan ("Jeff", "kahverengi", 1, 1)); Tavşan Listesi.Add (yeni Tavşan ("Sam", "beyaz", 1, 2));

Bu yeni tavşanı eskisi gibi yaratır, fakat aynı anda tavşanı da listeye ekler. Aynı şekilde şunu söyleyebiliriz:

Tavşan Tavşan3 = yeni Tavşan ("Jonny", "turuncu", 1, 1); RabbitList.Add (Rabbit3);

Her iki durumda da, bir nesne oluşturuldu ve listeye eklendi.

Ayrıca tavşan listemizden bu şekilde rahatça ve zarif bir şekilde bilgi alabilirsiniz:

foreach (RabbitList'te var Tavşan) {Console.WriteLine (Rabbit.RabbitName + "tartılır" + Rabbit.RabbitWeight + "kg"); }

Anlayabileceğiniz gibi, “foreach”, listedeki her öğe için bir adımı tekrarladığınız anlamına gelir. Ayrıca, listenizden bu şekilde bilgi alabilirsiniz:

RabbitList.Eat ();

Burada “1” endekstir, yani birinci konumda depolanan bilgilere atıfta bulunursunuz. Olduğu gibi, aslında ikinci Yine de eklediğiniz tavşan: çünkü programlamadaki listeler daima 0'dan başlar.

Fibonacci

Henüz tahminde bulunulmamış olmanız durumunda, şimdi tüm bu bilgileri bir Fibonacci dizisi oluşturmak için kullanacağız. Sonuçta, Android için C # öğreniyorsanız, aslında tüm bu teoriyle ilginç bir şeyler yapabilmelisiniz!

Fibonacci sekansında tavşanlar bir odada kapatılır ve üremeye bırakılır. Bir ay sonra üreyebilirler, bu noktada cinsel olarak olgunlaşırlar (bunun doğru Tavşan biyolojisi olup olmadığını doğrulayamıyorum). Eğer her tavşan çifti ondan sonra ayda bir kez üretebilirse, iki yavru üretiyorsa, sekansın nasıl olduğu:

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

Büyülü olarak, dizideki her sayı bir araya eklenen önceki iki sayının değeridir. Bilime göre, bu önemli bir şey.

İşin güzel yanı, bunu kopyalayabiliriz.

Öncelikle, yeni bir konsept getirmeliyiz: döngü. Bu sadece bir koşul sağlanana kadar aynı kodu tekrar tekrar tekrar eder. “For” döngüsü, bunu bir değişken oluşturarak, karşılamak istediğimiz koşulları ayarlayarak ve sonra üzerinde çalıştırarak yapmamızı sağlar - tümü parantez içinde tanımlanmıştır:

(int ay = 0; ay <100; ay ++) {// bir şeyler yapın}

Bu yüzden ay adında bir tamsayı yaratıyoruz ve 100'e eşit olana kadar döngü yapıyoruz. Sonra ay sayısını bir artırıyoruz.

Bunun bir Fibonacci dizisi haline gelebileceğini görmek ister misiniz? Bakın:

namespace ConsoleApp2 {sınıf Programı {statik void Ana (string args) {Liste RabbitList = yeni Liste(); Tavşan Listesi.Add (yeni Tavşan ("Jeff", "kahverengi", 0, 1)); RabbitList.Add (yeni Tavşan ("Sam", "beyaz", 0, 1)); (int ay = 0; ay <10; ay ++) {int firstRabbit = 0; int timesToReproduce = 0; foreach (RabbitList'te var Tavşan) {Console.Write ("R"); if (Rabbit.RabbitAge> 0) {if (firstRabbit == 0) {firstRabbit = 1; } else {firstRabbit = 0; timesToReproduce ++; }} Rabbit.RabbitAge ++; } (int i = 0; i <timesToReproduce; i ++) {RabbitList.Add (new Rabbit ("NewBabyRabbit", "brown", 0, 1)); RabbitList.Add (yeni Tavşan ("NewBabyRabbit", "kahverengi", 0, 1)); Console.Write ( "r"); Console.Write ( "r"); } Console.WriteLine ("---" + RabbitList.Count / 2 + "tavşan çifti var!"); Console.WriteLine ( ""); } Console.WriteLine ("Hepsi bitti!"); Console.ReadKey (); }}}

Tamam, düşündüğümden daha zordu!

Tüm bunlardan geçmeyeceğim, ama daha önce öğrendiklerinizi kullanarak, onu tersine çevirebilmelisiniz.

Bunu yapmanın kesinlikle daha zarif yolları var - matematikçi değilim. Bununla birlikte, bence oldukça eğlenceli bir egzersiz ve bir kez yapabileceğiniz zaman, büyük zaman için hazırsınız demektir.

Bu arada başka yaklaşımları da görmek isterim!

Buradan nereye gidiyoruz? Android için C # nasıl öğrenilir

Kemerindeki tüm bilgilerle, daha büyük şeylere başlamaya hazırsın. Özellikle, Android programında Xamarin veya Unity'de C # ile bıçaklamaya hazırsınız.

Bu farklıdır, çünkü Google, Microsoft ve Unity tarafından sağlanan sınıfları kullanacaksınız. “RigidBody2D.velocity” gibi bir şey yazdığınızda yaptığınız şey bir sınıftan bir mülke erişmek demektir. denilen RigidBody2D. Bu aynı şekilde çalışır, tek fark RigidBody2D'yi görememenizdir çünkü kendiniz yapmadınız.

Kemerinizin altındaki bu C # ile, bu seçeneklerden herhangi birine atlamaya ve ne olup bittiğini anlamaya gelince büyük bir başlangıç ​​yapmaya hazır olmalısınız:

  • Xamarin ile bir Android uygulaması nasıl yapılır
  • Unity ile 7 dakikada ilk Android oyununu kur

Yaklaşan bir derste, nasıl U dönüşü alabileceğinizi ve bunun yerine Windows uygulamaları oluşturmak için nasıl kullanabileceğinizi göreceğiz!

Bugün İngiltere'de mağaza raflarında çok ayıda harika telefon var, ancak birçoğu düpedüz atın almak için £ 700 veya daha pahalıya mal oluyor veya pahalı iki yıll...

Yeni Yıl kararınız bir kodlamada gelecekHazırlanmak için henüz erken değil. Bu, Premium 2020 Kod Paketini Öğrenmeyi adece 45 $ 'dan alma fıratınızdır. avantajlı başlamak....

İdare’Yi Seçin