
Beynim Durdu Yardım Eder Misiniz.
12
●330
- 10-06-2020, 23:09:23beynin durduysa biraz ara ver, disari cik hava al sonra tekrar bak.. Bu tarz durumlar olabiliyor, normaldir..
Yapman gereken sey öncelikle
Resimlere göre Dosya ve Element siniflari olusturmak daha sonra element sinifindan türetilmis 3 sinif daha olusturmak
Bos olarak da olustursan kafi simdilik.. Yani sadece propertiesler ve metodlar olsun.
Daha sonra bir metin dosyasi olacakmis burada anladigim kadariyla 4 sütun/kolon olacak ve burada element sinifi icin degerler barindiracak yani atiyorum söyle olacak
1,Na,Sodyum,1A
..............................
bu dosyayi okuyup element sinifindantan türetilmis GecisMetali ya da AlkaliMetal sinifindan bir nesne olusturacaksin.. Bu da en sondaki grup ismine göre. Aciklamaya göre 1A olanlar AlkaliMetal mis.. o halde
var okunanSatir ....
if(okunanSatir[3] == "1A") //alkali metal
{
var element = new AlkaliMetal();
element.Z= okunanSatir[0];
element.Sembol= okunanSatir[1];
.... gibi
}
else // gecismetali
{
.....
}
daha sonraki metodlarin da.. Bir metodun Z degerini string olarak dönderecek, diger metod da tüm propertyleri string olarak dönderecek... yani
return $"{this.Z} {this.Sembol} .... gibi";
kolay gelsin - 11-06-2020, 00:29:00Öncelikle çok teşekkür ederim element sınıfından türet dediğiniz olay class elementler adlı bir sınıf oluşturup onun altına void x,y,z adlı 3 tane metod mu oluşturmak.ertan2002 adlı üyeden alıntı: mesajı görüntüle
- 11-06-2020, 01:02:22zamanin ne kadar bilmiyorum ancak biraz temel nesneye yönelik programlamayi ögrenmeni tavsiye ederim. Asagida bunla ilgili playlisti ekledim izlersin..
Sinif olayina gelince söyle olacak..
public class Element { public int Z { get; set; } public string Sembol { get; set; } public string Ad { get; set; } public string Grup { get; set; } public virtual string TurYazdir() { return "Element"; } public string OzellikYazdir() { return $"{Z}, {Sembol}, {Ad}, {Grup}"; } } public class GecisMetali : Element { public GecisMetali(int z, string sembol, string ad, string grup) { this.Z = z; this.Sembol = sembol; this.Ad = ad; this.Grup = grup; } public override string TurYazdir() { return "Gecis Metali"; } }Ben burada Element ve GecisMetali sinifini yaptim. AlkaliMetal sinifi ayni olacak sadece tek fark Alkali Metal ismini dönderecek TurYazdir metodunda.. Diger diye bir de baska class'in var. Oraya TurYazdir metodunu eklemeyeceksin.
Sana kalan son is ise: DosyaOkuma olayini halletmek.. Bilgileri ArrayList seklinde olusturacaksin ve son sütunu okuyacaksin eger son sütundaki deger 1A ise AlkaliMetal sinifindan, B varsa GecisMetali sinifindan, hic biri degilse Diger sinifindan eleman olusturacaksin
örnek veriyorum, okudun verileri ve elementListesi olsun ismi (dikkat: hocanin kagitta yazdigi ArrayList<T>türü yok o yüzden List<T> kullanacaksin yani ArrayList<Element> yerine List<Element> olacak
List<Element> elementListesi = .... Okuma kodu burada olacak
List<Element> elementListesi = .... Okuma kodu burada olacak for (int i = 0; i < elementListesi.Count; i++) { Element element = null; if(elementListesi[i].Grup.Equals("1A")) element = new AlkaliMetal(elementListesi[i].Z,elementListesi[i].Sembol, elementListesi[i].Ad,elementListesi[i].Grup); else if (elementListesi[i].Grup.Contains("B")) element = new GecisMetali(elementListesi[i].Z, elementListesi[i].Sembol, elementListesi[i].Ad, elementListesi[i].Grup); else element = new Diger(elementListesi[i].Z, elementListesi[i].Sembol, elementListesi[i].Ad, elementListesi[i].Grup); // metodlari da bu sekil cagirabilirsin var tur = element.TurYazdir(); var ozellik = element.OzellikYazdir(); }gibi...
bir cok kismini yazdim zaten.. kalanini kendin tamamlamalisin.. kolay gelsin
https://www.youtube.com/watch?v=K47m...S05uxfNHb_KTq1 - 11-06-2020, 08:28:01çok teşekkür ederim. geri kalan kısmını hallederim.ertan2002 adlı üyeden alıntı: mesajı görüntüle
Hocam son olarak proje klasörü yüklenmeyecektir derken hoca ne demek istemiş rar olarak mı yüklememi istemiş acaba - 11-06-2020, 09:47:44hayir hocam arsiv dedigi rar dosyasi.. O sekilde de yapmaman lazim ya da klasör olarak da yapmaman lazim.
Yani tüm siniflarini tek bir dosya icine yazmis olman lazim. O da program.cs dosyasi. Yani ekstra bir cs dosyasi olusturmuyorsun..
Ornek:
namespace FinalOdevi { public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } } public class Element { ...... } public class GecisMetali : Element { ..... } }örnek olarak böyle. Yeni bir console uygulamasi actiginda program class'i bittikten sonra diger classlari bu sekilde yazacaksin tek dosyaya. - 30-06-2020, 10:07:33merhaba, basit bir hata gibi duruyor.
DosyadanOku metodunun icinde ikinci { ve en alttan 3. } fazla ve gereksiz olmus o karakterleri silin (kodun calismamasiyla alakasi yok)
Ayrica metodu static yapmissin, onu da düzeltelim
Hata su: elementListesi ögesi bir Element liste türünde ama DosyadanOku metodu string dönderiyor. Söyle düzeltelim
-->static kelimesini sil
publicstaticList<string> DosyadanOku(string dosya_yolu)
{
List<string> sonuc = new List<string>();
string yazi="";
FileStream ... (tamamlayin)
StreamReader .... (tamamlayin)
string yazi = sw.ReadLine();(silin)
do
{
yazi = sw.ReadLine();
sonuc.Add(yazi);
}(!string.IsNullOrEmpty(yazi))
sw.Close();
fs.Close();
return sonuc;
}
}
bu sekilde düzenlersen calismasi lazim.
Daha kolay olarak
public List<string> DosyadanOku(string dosya_yolu)
{
return File.ReadAllLines(dosya_yolu).ToList();
}
ve cagirirken de
Dosya ds = new Dosya();
List<string> elementListesi = ds.DosyadanOku("semboller.txt");
olarak cagirabilirsin.


