Zadania na laboratorium:
1.Stworzyć w głównej przestrzeni projektu podprzestrzeń Dane, a w niej kolejno dziedziczące po sobie klasy Przedmiot (właściwości automatyczne Nazwa,Waga), Maszyna (Moc), Samochód (Prędkość, LiczbaOsób). Stworzyć w głównej
przestrzeni nazw projketu klasę statyczną Wyświetlanie, która będzie zawierała metodę DodajDoListy(ListBox lista, Przedmiot dane). Metoda na podanej przy wywołaniu liście wyświetli wszystkie dostępne dane przekazenego obiektu,
tzn. w przypadku Przedmiotu tylko nazwę i wagę, a Samochodu - nazwę, wagę, moc, prędkość, liczbę osoób. Wykorzystać słowa kluczowe is i as. Na przycisku btnZadanie1 utworzyć obiekty wszystkich klas danych i przetestować działaniemetody DodajDoListy.
2.Dodać do klasy Samochód pole satyczne LiczbaSamochodow oraz konstruktor bezargumentowy, który przy tworzeniu każdego, nowego obiektu klasy Samchód będzie zwiększał licznik. Uzupełnić klasę Samochód o destruktor, która przy niszczeniu obiektu, będzie ten licznik zmniejszał. Przetestować dzialanie na przycisku btnZadanie2: stworzyć kilka obiektów, sprawdzić licznik dopisując jego wartość do listy, wyzerować referencje kilku obiektów, sprawdzić licznik,
użyć metody GC.Collect, sprawdzić licznik.
3.W głównej przestrzeni aplikacji stworzyć delegat DelegatPole reprezentujący metody przyjmujące argumenty typu double wysokość i szerokość i zwracające wartość double. W klasie Form1 stowrzyć metodę dynamiczną, zwracającą
wartość Objętość przyjmującą argumenty double SzerokoscPodstawy, WysokośćPodstawy, WysokośćBryły oraz delegat do metody liczącej pole podstawy DelegatPole. Metoda ma liczyć objętość graniastosłupa, którego rodzaj podstawy
będzie decydował o sposobie liczenia jej pola. Stworzyć w klasie Form1 dwie metody PoleProstokąta i PoleTrójkąta pasujące do zdefiniowanego delegatu. Na przycisku btnZadanie3 wywołać dwukrotnie metodę Objętość dla graniastosłupa o podstawie trójkąta i prostokąta. Wyniki dodać do listy lstLista
4.Do klasy Przedmiot dodać zdarzenie UjemnaWaga, które będzie wyzwalane przy próbie wpisania do właściwości Waga wartości ujemnej. Zdarzenie ma wywoływać standardową metodę obsługi zdarzeń z argumentami object i EventArgs.
Na przycisku btnZadanie4 stworzyć obiekt klasy Przedmiot, podpiąć testową metodę obsługi zdarzenia i przetestować działanie zdarzenia wyświetlając okienko MessageBox.
Mój program:
Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Lab5
{
public partial class Form1 : Form
{
public double Objetosc(double SzerPod, double WysPod, double WysBry, DelegatPole pole)
{
return pole(WysPod, SzerPod) * WysBry;
}
public double PolePros(double Wys, double Szer)
{
return Wys * Szer;
}
public double PoleTroj(double Wys, double Szer)
{
return 0.5 * Wys * Szer;
}
public Form1()
{
InitializeComponent();
}
private void btnZadanie1_Click(object sender, EventArgs e)
{
Dane.Rzecz rzecz = new Dane.Rzecz() { Nazwa = "Lampa", Waga = 0.5 };
Dane.Przyrzad przyrzad = new Dane.Przyrzad() { Nazwa = "Lutownica", Waga = 1, Moc = 100 };
Dane.Auto auto = new Dane.Auto() { Nazwa = "Smart", PasaLicz = 2, Pred = 90 };
Dane.Wyswietlanie.DodajDoListy(lst, rzecz);
Dane.Wyswietlanie.DodajDoListy(lst, przyrzad);
Dane.Wyswietlanie.DodajDoListy(lst, auto);
}
private void btnZadanie2_Click(object sender, EventArgs e)
{
Dane.Rzecz a = new Dane.Rzecz() { Nazwa = "x", Waga = 20 };
Dane.Rzecz b = new Dane.Rzecz() { Nazwa = "z", Waga = 20 };
Dane.Wyswietlanie.DodajDoListy(lst, a);
Dane.Wyswietlanie.DodajDoListy(lst, b);
}
private void btnZadanie3_Click(object sender, EventArgs e)
{
DelegatPole tam = new DelegatPole(PoleTroj);
lst.Items.Add(Objetosc(6, 2, 1, tam));
tam = PolePros;
lst.Items.Add(Objetosc(0.5, 5, 4, tam));
}
}
namespace Dane
{
static class Wyswietlanie
{
public static void DodajDoListy(ListBox lst, Dane.Rzecz Dane)
{
lst.Items.Add(Dane.Nazwa + " " + Dane.Waga);
}
public static void DodajDoListy(ListBox lst, Dane.Auto Dane)
{
lst.Items.Add(Dane.Nazwa + " " + Dane.PasaLicz + " " + Dane.Pred);
}
}
class Rzecz
{
public string Nazwa { get; set; }
public double Waga { get; set; }
}
class Przyrzad : Rzecz
{
public int Moc { get; set; }
}
class Auto : Przyrzad
{
public double Pred { get; set; }
public int PasaLicz { get; set; }
}
}
public delegate double DelegatPole(double Wysokosc, double Szerokosc);
}
Zakładki