Konuyu görüntüle
IUCODERS FORUM > Programlama > .NET > C# çalışma zamanı nesne yaratmak ve erişmek??
Yazar
akgulozkan


avatar
istanbul
Kayıt: 12.12.2006
28.03.2009-23:42 #58470
Sorum çok basit görünebilir ama ben düşündüm bir türlü cevabını bulamadım.

Soru(n)m şu:

Ben çalışma esnasında butona basarak bir nesne yaratmak istiyorum. Bu nesnenin standart özellikleri olmalı, -örneğin tıkladığım zaman bana bir mesaj versin- bu özelliklerin tamamı tüm yaratılan nesneler için geçerli olmalı. Yarattığımız nesnelerin sayısı önemli değil ama yaratma işleminden sonra bellekte bir yerde olmalı ve ben onlara istediğim zaman erişmeliyim.

Yeni yarattığım sınıftan global tanımlanan bir dizi içerisine atıp erişmeye çalıştım. Bunun dışında OOP mantığıyla daha örtüşen bir çözüm sunabilecek arkadaşlara şimdiden teşekkür ederim blushing





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
29.03.2009-00:06 #58471
static bir linkedlist , stack yada queue içerisnde nesneleri tutabilirsin. static bir dizi olsa onu gerektiğinde genişletmek için felan uğraşmak zorunda kalırsın.





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
29.03.2009-00:18 #58472
istersen diğer yapılar içinde örnek yazabilirim.

 class Program
    {

        private static Queue<Program> nesneler;

        public static Queue<Program> Nesneler{
            get { return nesneler; }
        }

        private Program(){

        }

        public static void nesneEkle(){
            Program yeninesne = new Program();
            nesneler.Enqueue(yeninesne); // NESLE EKLEME
        }

        public static Program nesneAl(){
            return nesneler.Dequeue();
        }

    }






The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
akgulozkan


avatar
istanbul
Kayıt: 12.12.2006
29.03.2009-00:19 #58473
extreme yazdi
 
static bir linkedlist , stack yada queue içerisnde nesneleri tutabilirsin. static bir dizi olsa onu gerektiğinde genişletmek için felan uğraşmak zorunda kalırsın.


dizide tutmanın dışında bir seçenek yok mu??





Yazar
akgulozkan


avatar
istanbul
Kayıt: 12.12.2006
29.03.2009-00:21 #58474
Dizinin istediğim elemanına zaten erişebliyorum.. Başka bir seçenek olamaz mı





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
29.03.2009-00:26 #58476
akgulozkan yazdi
 
Dizinin istediğim elemanına zaten erişebliyorum.. Başka bir seçenek olamaz mı


Sen nasıl bişey istiyosun biggrin.

class Program
    {


        private static int nesnesayisi = 0;
        private static int diziBoyutu = 1;
        private static Program[] nesnedizisi;

        public Program[] Nesnedizisi{
            get { return nesnedizisi; }
        }

        private static void diziGenislet(){
            Program[] tempdizi = new Program[diziBoyutu];

            for (int i = 0; i < diziBoyutu;i++ )
            {
                tempdizi[i] = nesnedizisi[i];
            }

            diziBoyutu *= 2;

            nesnedizisi = new Program[diziBoyutu];

            for (int i = 0; i < diziBoyutu/2; i++)
            {
                 nesnedizisi[i] = tempdizi[i];
            }
        }

        private Program(){

        }

        public void nesneEkle(){            
            if(nesnesayisi == diziBoyutu){
                diziGenislet();
            }
            nesnedizisi[nesnesayisi] = new Program();
        }

       

    }






The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
akgulozkan


avatar
istanbul
Kayıt: 12.12.2006
29.03.2009-00:30 #58477
neyse galiba dizi mantığından başka bi yolu yok d ohdrooling sağol burakcım biggrin

Not: Dizinin elemanlarına erişmede, dizinin boyutunun sınırlarında vs. sorunum yok. Sadece dizi, struct yada benzeri özelliklerinin dışında nasıl yapabiliriz diye sormuştum





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
29.03.2009-00:36 #58478
akgulozkan yazdi
 
neyse galiba dizi mantığından başka bi yolu yok d ohdrooling sağol burakcım biggrin

Not: Dizinin elemanlarına erişmede, dizinin boyutunun sınırlarında vs. sorunum yok. Sadece dizi, struct yada benzeri özelliklerinin dışında nasıl yapabiliriz diye sormuştum


Abi garbage collector'u kapattıktan sonra nesnelerede tanımlayıcı binary bi kod gömüp işletim sistemine izin verdirip tüm ram'i taradıktan sonra dağınık böyle birbirinden kopmuş nesneler bulunabilir sanırım :D. Farklı bişey bende bulamadımdancing





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
akgulozkan


avatar
istanbul
Kayıt: 12.12.2006
29.03.2009-00:54 #58479
Hocam bi pictureBox nesnesi düşün butona bastıkça bunlardan yaratıcak ve ben üzerine gelip bu pictureBox ları taşıyabilmeliyim. Şimdi taşıma işlemlerini ıvırı zıvırı flan hep yapabiliyorum. Ama bunları yaparken yaratılan nesnelerin hepsi dizide tutuluyor. dizi dışında metodlara parametre olarak nesneyi atabileceğim bişey olabilr mi? fanteziye gerek yokbiggrin

private void button1_Click(object sender, EventArgs e)
{

oz_box box1 = new oz_box();
box1.SetBounds(30,300,30,40);

box1.BackColor = Color.Blue;
this.Controls.Add(box1);

box1.MouseDown+=new MouseEventHandler(box1_MouseDown);
box1.MouseMove += new MouseEventHandler(box1_MouseMove);
box1.MouseUp += new MouseEventHandler(box1_MouseUp);

kutular[kutuIndex] = box1;
kutuIndex++;



}


yukarıdaki kodda diziye atıyorum. Ama mesela box1_MouseDown metoduna parametre almaya çalıştığım zaman problem yaşıyorum. Parametre alamıyorsam neden olabilir acba?





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
29.03.2009-01:06 #58480
akgulozkan yazdi
 


Abi c# çakma yadancing. c++ olsa herşey elinde olur ama onuna yazmak eziyetbiggrin





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
akgulozkan


avatar
istanbul
Kayıt: 12.12.2006
29.03.2009-01:16 #58481
extreme yazdi
 
akgulozkan yazdi
 


Abi c# çakma yadancing. c++ olsa herşey elinde olur ama onuna yazmak eziyetbiggrin


çakma ya biggrin .Net çileri kızdıralım laughing viva la assembly biggrin elektronikçi olarak başka ne diyebilirim tongue





Yazar
cicikus


avatar
istanbul
Kayıt: 02.02.2007
29.03.2009-16:10 #58486
C # a yeni öğrenmeye başlayan biri olarak bu basit programın neden çalışmıyor? hata veriyor...



namespace ConsoleApplication2
{
class Program
{
string girilenDeger = Console.ReadLine();
int sayi = Convert.ToInt32(girilenDeger);
switch (sayi)
{
case 14: Console.WriteLine("ondort"); break;
case 15: Console.WriteLine("onbes"); break;
case 16:
{
//birden fazla satir kod yazilabilir
int x = sayi / 2;
Console.WriteLine(x);
};
break;
case 17: Console.WriteLine("onyedi"); break;
default: Console.WriteLine("gecersiz deger"); break;
}
}
}





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
29.03.2009-16:14 #58487
cicikus yazdi
 


Kodu main metot içinde yazmanız lazım. İlk olarak main çalışır.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication2

{

class Program

{

static void Main(string[] args)

{

string girilenDeger = Console.ReadLine(); 

int sayi = Convert.ToInt32(girilenDeger); 

 

switch (sayi) 

{

 

case 14: Console.WriteLine("ondort"); break; 

case 15: Console.WriteLine("onbes"); break; 

case 16: 

{

 

//birden fazla satir kod yazilabilir 

int x = sayi / 2; 

Console.WriteLine(x); 

}; 

break; 

case 17: Console.WriteLine("onyedi"); break; 

default: Console.WriteLine("gecersiz deger"); break; 

}

}

 

}


}






The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
cicikus


avatar
istanbul
Kayıt: 02.02.2007
29.03.2009-18:33 #58489
class Program
{


static void Main(string[] args)
{
int sifre=123;
int denemeadeti=0;
do
{
Console.WriteLine("şifrenizi giriniz:");
int girilensifre=Convert.ToInt32(Console.ReadLine());
if(girilensifre==sifre)
{
Console.WriteLine("hoşgeldiniz:");
break;

}
else{
Console.WriteLine("Yanlışşifre giridniz:");

}
++denemeadeti;
while(denemeadeti<3);


}
}

hata veriyor ve hatalı çalışyor...
yardımcı olabilir misiniz?





Yazar
tuuba


avatar
Bursa
Kayıt: 22.01.2007
29.03.2009-18:45 #58490
C# ın # ını bile bilmem ama bu kod çalışıyortongue gözünü sevdiğiminrose JAVA rose

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;   



class Program
{


    static void Main(string[] args)
    {
        int sifre = 123;
        int denemeadeti = 0;
        do
        {
            Console.WriteLine("şifrenizi giriniz:");
            int girilensifre = Convert.ToInt32(Console.ReadLine());
            if (girilensifre == sifre)
            {
                Console.WriteLine("hoşgeldiniz:");
                break;

            }
            else
                Console.WriteLine("Yanlışşifre giridniz:");
            ++denemeadeti;
        } while (denemeadeti < 3);


    }
}






1 2
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb