„Sznikák példakódok” változatai közötti eltérés

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
(Háttérszál)
(Singleton)
226. sor: 226. sor:
  
  
 +
{{Infobox
 +
| cím = Singleton példa
 +
| háttérszín = #C0ffee
 +
| keretszín = black
 +
| tartalom =
 +
Singleton tervezési minta implementálása C# nyelven
 +
{{Infobox-táblázat|
 +
{{Infobox-táblázatsor|A kód nyelve|C#}}
 +
}}
 +
}}
 +
public class Singleton
 +
{
 +
    private static Singleton instance = null;
 +
 +
    public static Singleton Instance
 +
    {
 +
      get
 +
      {
 +
          if (instance == null)
 +
            instance = new Singleton();
 +
          return instance;
 +
      }
 +
    }
 +
 +
    protected Singleton() {} // Ne lehessen elérni a konstruktorát
  
 
+
    public void Print() {/* ... */}
 +
}
 +
 +
// Használata:
 +
Singleton s1 = Singleton.Instance;
 +
s1.Print();
 +
// Vagy:
 +
Singleton.Instance.Print();
  
  
 
[[Kategória:Infoalap]]
 
[[Kategória:Infoalap]]

A lap 2013. május 28., 11:53-kori változata

← Vissza az előző oldalra – Szoftvertechnikák


Hiba a bélyegkép létrehozásakor: Nem lehet a bélyegképet a célhelyre menteni
Az oldal épp egy nagyobb változáson megy keresztül, kérlek nézz vissza kicsit később
Hiba a bélyegkép létrehozásakor: Nem lehet a bélyegképet a célhelyre menteni


Szál indítása

Mutasson kódrészletet szál indítására

A kód nyelve
C#
class ThreadTestClass
{ 
   public static void Main(string[] args) 
   { 
      Thread t = null; 
      if (args.Length == 0) 
      { 
         t = new Thread(new ThreadStart(ThreadMethod1)); 
         t.Start(); 
      } 
      else 
      { 
         t = new Thread(new ParameterizedThreadStart(ThreadMethod2)); 
         t.Start(args[0]); 
      }
   }
 
   public static void ThreadMethod1() 
   { 
      Console.WriteLine("Thread without parameter."); 
   } 

   public static void ThreadMethod2(object param) 
   { 
      Console.WriteLine("Thread with parameter: {0}", param.ToString()); 
   } 
}


Kapcsolatalapú hozzáférés

Ismertesse egy rövid C# példán keresztül az ADO.NET kapcsolatalapú adathozzáférést

A kód nyelve
C#
SqlConnection conn = null; 
try 
{ 
   // Kapcsolódás azadatbázishoz 
   conn = new SqlConnection(@"Data Source=LAPTOP\SQLEXPRESS;InitialCatalog=Northwind;Integrated Security=True"); 
   // A kapcsolat megnyitása 
   conn.Open(); 
   // Az adatbázis parancs létrehozása 
   SqlCommand command = new SqlCommand("SELECT ShipperID, CompanyName, Phone FROM Shippers"); 
   // Adatbázis kapcsolat megadása
   command.Connection = conn; 
   Console.WriteLine("{0,0}{1,15}{2,15}", "ShipperID", "CompanyName", "Phone"); 
   Console.WriteLine("-----------------------------------------------------------------"); 
   // Az adatok lekérdezése és kiiratása 
   using (SqlDataReader reader = command.ExecuteReader()) 
   { 
      while (reader.Read()) 
      Console.WriteLine("{0,4}{1,20}{2,20}", 
                          reader["ShipperID"].ToString(),
                          reader["CompanyName"].ToString(), 
                          reader["Phone"].ToString()); 
   } 
} 
catch (Exception ex) 
{
   // Kivétel szövegének kiiratása 
   Console.WriteLine(ex.Message); 
} 
finally 
{ 
   // Az adatbázis kapcsolat lezárása, ha meg lett nyitva 
   if((conn!=null)&&(conn.State==System.Data.ConnectionState.Open)) 
      conn.Close(); 
}


Eseménykezelés

Írj egy Form alapú programot, ami MessageBox-ban megjeleníti a leütött billentyűt!

A kód nyelve
C#
public partial class MainForm : Form
{
   public MainForm()
   {
      InitializeComponent();
      this.KeyDown += new KeyEventHandler(this.MainForm_KeyDown);
   }

   protected override void OnKeyDown(KeyEventArgs e)
   {
      // Meghívjuk az eredeti függvényt is
      base.OnKeyDown(e);
      MessageBox.Show("A billentyű (virt. fv.): " + e.KeyCode.ToString());
   }

   private void MainForm_KeyDown(object sender, KeyEventArgs e)
   {
      MessageBox.Show("A billentyű (eseménykez.): " + e.KeyCode.ToString());
   }
}


Négyzet rajzolás

Írjon olyan C# nyelvű alkalmazásrészletet, amely a (10,20) koordinátában megjelenít egy közepesen szürke színnel kitöltött 10 pixel hosszúságú négyzetet. A négyzet színe minden "r" bilentyű megnyomására legyen egyre sötétebb. A megjelenítés DGI-re épüljön.

A kód nyelve
C#
public partial class Form1 : Form
{
   private Brush brush1;
   private int grey = 200;

   public Form1()
   {
      InitializeComponent();
   }

   protected override void OnKeyDown(KeyEventArgs e)
   {
      base.OnKeyDown(e);
      if(e.KeyCode == Keys.R) {
         if(grey == 0) // ha elértük a színtartomány végét
            grey = 200;
         grey -= 10;
         Invalidate();
      }
   }

   protected override void OnPaint(PaintEventArgs e)
   {
      base.OnPaint(e);
      using (brush1 = new SolidBrush(ConsoleColor.FromArgb(grey, grey, grey)))
      {
         e.Graphics.FillRectrangle(brush1, 10, 20, 10+10, 20+10);
      }
   }
}


String rajzolás

Írjon olyan C# nyelvű alkalmazásrészletet, ami a (20,20) kokrdinátában megjeleníti, hogy a legutóbbi egérkattintás óta hány másodperc telt el! A megjelenítés GDI-re épüljön.

A kód nyelve
C#
DateTime lastClick;
String strDeltaTime;

private void Form1_Load(object sender, EventArgs e)
{
   lastClick = DateTime.Now;
   strDeltaTime = "0";
}

private void Form1_MouseClick(object sender, MouseEventArgs e)
{
   TimeSpan deltaTime = DateTime.Now.Subtract(lastClick);
   lastClick = DateTime.Now;
   strDeltaTime = deltaTime.Seconds.ToString();
   Invalidate(); // érvényteleníteni kell az ablak területet, hogy az új érték látszódjon
}

protected override void OnPaint(PaintEventArgs e) {
   e.Graphics.DrawString(strDeltaTime, this.Font, new SolidBrush(Color.Black), 20, 20);
   base.OnPaint(e);
}


Háttérszál

Írjon programot, ami egy háttérszálban egy perc alatt aszámol 1-zől 60-ig és az aktuális értéket kiírja a konzolra

A kód nyelve
C#
public class Program
{
   public void static Main(string[] args)
   {
      Thread t = new Thread(Szamol);
      t.IsBackground = true;
      t.Start();
   }

   public void static Szamol()
   {
      private static int szam = 0;
      if(szam < 60)
      {
         Sleep(1000);
         szam++;
         Console.WriteLine("A számláló értéke: {0}",szam.ToString());
      }
   }
}


Singleton példa

Singleton tervezési minta implementálása C# nyelven

A kód nyelve
C#
public class Singleton
{
   private static Singleton instance = null;

   public static Singleton Instance
   {
      get
      {
         if (instance == null)
            instance = new Singleton();
         return instance;
      }
   }

   protected Singleton() {} // Ne lehessen elérni a konstruktorát
   public void Print() {/* ... */}
}

// Használata:
Singleton s1 = Singleton.Instance;
s1.Print();
// Vagy:
Singleton.Instance.Print();