• 10-06-2020, 19:53:27
    #1
    Merhaba, bir ödevim var ama nedense bir anda beynim durdu ve şuan hiçbir fikir üretemiyorum hocanın dediklerini bile anlamadım acaba yardımcı olabilir misiniz. ödevi c# konsol kullanarak yapacağım
  • 10-06-2020, 23:09:23
    #2
    beynin 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
    #3
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    beynin 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
    Ö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.
  • 11-06-2020, 01:02:22
    #4
    zamanin 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
    #5
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    zamanin 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
    çok teşekkür ederim. geri kalan kısmını hallederim.



    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:44
    #6
    hayir 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.
  • 29-06-2020, 15:44:52
    #7
    Ertan hocam ödevin teslim tarihi erkene çekildi o yüzden opp kavramını tam anlayamadım tekrardan yardım etme şansınız var mı ?



    Hocam resimde gördüğünüz hatayı alıyorum bi bakarsanız sevinirim.

  • 30-06-2020, 10:07:33
    #8
    merhaba, 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

    public static List<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.
  • 01-07-2020, 13:01:31
    #9
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    hayir 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.