folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# OOP Classlarla İlgili Çok Basit Bir Soru



C# OOP Classlarla İlgili Çok Basit Bir Soru

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo
    GodKlaus bunu yazdı

    hala sorunu çözemedim. Bir allahın kulu yok mu şu kodu yazıpta halledeceksin diyen :D

    edit : bu kodu yazdım düzeldi 

    Form1 mainForm = (Form1)Application.OpenForms[0];

    türeme kullanmiyorsun dostum bu aslinda senin sorunun.

    Kodu kopyala da koy resmini koymak yerine de düzeltip gosterelim. yoksa kodu tekrar yazmak ile kimse uğraşmak istemez.


    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Ne yapmak istediğini tam anlamadım. Senin olayın şuna benzer:

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                var rectangle = new Rectangle(this);
                rectangle.Run("test mesajı");
            }
        }
        public class Rectangle
        {
            private Form frm_;
            public Rectangle(Form frm)
            {
                frm_ = frm;
            }
            public void Run(string txt)
            {
                frm_.Text = txt;
            }
        }

     


    Olaylara karışmayın!
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Diathorus
    Diathorus's avatar
    Kayıt Tarihi: 19/Mayıs/2014
    Erkek
    GodKlaus bunu yazdı

    Edit : 

    Form1'deki herhangi bir listbox label textbox button cart curt bir nesneye FARKLI BİR CLASS'TAN nasıl erişicem ? 

    Olay tamamen bu :D

    Dostum problemde buradan kaynaklanıyor zaten.

    Form1'deki herhangi bir attribute'a ap ayrı bir sınıftan erişmemen gerekiyor. OOP'nin mantığında yok böyle bir şey.

    Senin sınıflar arasında zayıf bağ kurman gerekiyor ( loose coupling ) . Yazdığın kodda bunları nasıl sıkı sıkıya bağlarım diye uğraşmışsın. ( tight coupling )

    Unutma Form1'de bir sınıftır.

     

    Kabaca şöyle yazayım.

    Rectangle diye bir sınıfın olur. Bu sınıfın property'leri olur.

    AskForProperties diye bir method yazarsın. Bu method sınıfın property'lerini doldurup geriye Rectangle sınıfının instance'sını döndürür.

    Artık bundan sonra elinde Rectangle sınıfının örneği olduğu için istediğin yerde Form1'in attribute'lerini değiştirirsin.

    Anlaşılmadıysa kod örneği gönderirim.

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GodKlaus
    GodKlaus's avatar
    Kayıt Tarihi: 13/Ocak/2014
    Erkek
    Diathorus bunu yazdı
    GodKlaus bunu yazdı

    Edit : 

    Form1'deki herhangi bir listbox label textbox button cart curt bir nesneye FARKLI BİR CLASS'TAN nasıl erişicem ? 

    Olay tamamen bu :D

    Dostum problemde buradan kaynaklanıyor zaten.

    Form1'deki herhangi bir attribute'a ap ayrı bir sınıftan erişmemen gerekiyor. OOP'nin mantığında yok böyle bir şey.

    Senin sınıflar arasında zayıf bağ kurman gerekiyor ( loose coupling ) . Yazdığın kodda bunları nasıl sıkı sıkıya bağlarım diye uğraşmışsın. ( tight coupling )

    Unutma Form1'de bir sınıftır.

     

    Kabaca şöyle yazayım.

    Rectangle diye bir sınıfın olur. Bu sınıfın property'leri olur.

    AskForProperties diye bir method yazarsın. Bu method sınıfın property'lerini doldurup geriye Rectangle sınıfının instance'sını döndürür.

    Artık bundan sonra elinde Rectangle sınıfının örneği olduğu için istediğin yerde Form1'in attribute'lerini değiştirirsin.

    Anlaşılmadıysa kod örneği gönderirim.

    Hocam diyorsun ki Form1 bir class'tır ve Form1'deki herhangi bir attribute'e ayrı bir classtan erişmemeliyim. OOP'de olay bir classtan obje oluşturup o obje ile farklı classlara erişmek değil mi ? 

    C++'ta int main'in içine classAdi objeAdi; yazıp üstte tanımladığım classın içerisindeki fonksiyonlara , değişkenlere erişiyorum.

    C#'ta Form1'in içine alttaki class tipinde bir obje oluşturup bu obje sayesinde class'a erişebiliyorum AMA alttaki classtan Form1'e erişemiyorum. Benim sorunum bu. Bunun içinde Form1 tipinde obje oluşturup ama olmuyor. 

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp1
    {
    
        public partial class Form1 : Form
        {
            
            bool round = false;
            Rectangle rec = new Rectangle();
            public Form1()
            {
                InitializeComponent();
                label2.BackColor = Color.YellowGreen;
                label2.ForeColor = Color.Maroon;
                label3.Text = "Waiting For Width / Length Values";
                textBox1.Text = "Width";
                textBox2.Text = "Length";
                textBox1.Enabled = false;
                textBox2.Enabled = false;
                button2.Visible = false;
              
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
               
            }
            
            private void button1_Click(object sender, EventArgs e)
            {
                
                if (round==false)
                {
                    textBox1.Enabled = true;
                    textBox1.Text = "";
                    textBox2.Enabled = true;
                    textBox2.Text = "";
    
                    button1.Text = "SEND";
                    round = true;
                }
                else
                {                
                    button2.Visible = true;
                    rec.askForVariables(Convert.ToDouble(textBox1.Text),Convert.ToDouble(textBox2.Text));
                }
            }
    
            private void button2_Click(object sender, EventArgs e)
            {            
                MessageBox.Show("Width Is " + rec.returnWidth() + " cm\nLength Is " + rec.returnLength() + " cm\nArea Is " + rec.returnArea() + " cm'2\nPerimeter Is " + rec.returnPerimeter() + " cm'2");
            }
        }
        public class Rectangle
        {
            static Form1 frm = Application.OpenForms.OfType<Form1>().FirstOrDefault();
            //Form1 frm = (Form1)Application.OpenForms["Form1"];
            private double en , boy , area , perimeter;
            public void askForVariables(double x, double y)
            {
                setWidth(x);
                setLength(y);   
                calculateArea(this.en,this.boy);
                calculatePerimeter(this.en,this.boy);
            }
            private void calculateArea(double en,double boy)
            {
                area = en * boy;            
            }
            private void calculatePerimeter(double en, double boy)
            {
                perimeter = 2 * (en + boy);
            }
            public void setWidth(double p)
            {
                en = p;            
            }
            public void setLength(double o)
            {
                boy = o;
            }
            public double returnWidth()
            {           
                return en;
            }
            public double returnLength()
            {
                return boy;
            }
            public double returnArea()
            {
                return area;
            }
            public double returnPerimeter()
            {
                return perimeter;
            }    
        }
    }
    

     


    Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    siyahbereli
    siyahbereli's avatar
    Kayıt Tarihi: 03/Ocak/2006
    Erkek

    C# oop derken object oriented programing mi demek istiyorsun. c# ın kendisi zaten oop değil mi?

    sanırım C# interface lerle ilgili bir soru sorduğun


    Yapmadıklarınıza pişman olmaktansa, Yaptıklarınıza pişman olun...Yapın pişman olun, yada yapmayın yine pişman olun.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GodKlaus
    GodKlaus's avatar
    Kayıt Tarihi: 13/Ocak/2014
    Erkek
    siyahbereli bunu yazdı

    C# oop derken object oriented programing mi demek istiyorsun. c# ın kendisi zaten oop değil mi?

    sanırım C# interface lerle ilgili bir soru sorduğun

    evet öyle de sorum farklı benim Karıştırma oraları Interface filan değil demek istediğim :D

    Başka bir classtan form1'deki label1'e nasıl erişicem ? Bunu 2 gündür çözemedim :D


    Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    saybirs
    saybirs's avatar
    Kayıt Tarihi: 24/Temmuz/2009
    Erkek

    daha neyi zorluyorsun hoca ?

    @YeniHarman çözümü sunmuş işte.

    Rectangle classındaki constructor da form parametresini isteyeceksin.

    classı create ederken de Rectangle _rec = new Rectangle(this); diye create edeceksin oldu bitti.

    2 gündür neyini uğraşıyorsun allasen ?

    edit..

    bilale anlatır gibi anlattım buyur.

     

    saybirs tarafından 30/Oca/18 18:56 tarihinde düzenlenmiştir
Toplam Hit: 2797 Toplam Mesaj: 18
c# oop class