Programowanie obiektowe i zdarzeniowe



Podobne dokumenty
Podstawy programowania obiektowego

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe

Przewodnik krok po kroku:

1. Wprowadzenie do WPF i XAML. Tworzenie interfejsu użytkownika.

Programowanie telefonów z Windows Phone 7, cz. 2

Technologie i usługi internetowe cz. 2

Materiały do zajęć VII

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie komputerowe. Zajęcia 7

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Klasy abstrakcyjne, interfejsy i polimorfizm

Wstęp do Programowania 2

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Wykład 4: Klasy i Metody

Przypomnienie o klasach i obiektach

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Enkapsulacja, dziedziczenie, polimorfizm

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

Builder (budowniczy) Cel: Przykład:

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

PARADYGMATY PROGRAMOWANIA Wykład 3

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Dziedziczenie. dr Jarosław Skaruz

Dokumentacja do API Javy.

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Sposoby przekazywania parametrów w metodach.

PARADYGMATY PROGRAMOWANIA Wykład 4

TEMAT : KLASY POLIMORFIZM

Rozwój aplikacji modułowych Paweł Brudnicki. Dodanie modułu

Definiowanie własnych klas

Języki i metody programowania Java. Wykład 2 (część 2)

Programowanie obiektowe

Programowanie obiektowe

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie obiektowe

Programowanie obiektowe

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Programowanie obiektowe

Konstruktor kopiujacy

Metody Metody, parametry, zwracanie wartości

Klasy cd. Struktury Interfejsy Wyjątki

Programowanie w środowiskach graficznych. Wykład 3 Język C#

Programowanie 2. Język C++. Wykład 3.

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Programowanie obiektowe

Podstawy Języka Java

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

KLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej


Wykład 5 Okna MDI i SDI, dziedziczenie

Programowanie obiektowe w C++ Wykład 12

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Projektowanie obiektowe. dr Jarosław Skaruz

public enum Environment { Development("Deweloperskie"), Test("Testowe"), Production("Produkcyjne"); private String name;

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Aplikacje w środowisku Java

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Aplikacje w środowisku Java

Logger. Następnie w klasie Bootstrapper muimy zarejestrować nasz nowy logger:

Programowanie, część I

11.6 Klasa do obsługi liczb wymiernych

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Klasy i obiekty cz II

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

TEMAT : KLASY DZIEDZICZENIE

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Projektowanie klas c.d. Projektowanie klas przykład

Wykład 5: Klasy cz. 3

Podstawy i języki programowania

Diagramy klas. dr Jarosław Skaruz

Programowanie, część I

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

using System;... using System.Threading;

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Plik klasy. h deklaracje klas

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Transkrypt:

Programowanie obiektowe i zdarzeniowe wkład 2 klas i obiekt namespace ConsoleApplication1 // współrzędne punktu int, ; Jak zdefiniować w programie punkt? = 3; = 2; Może tak? // wpisanie informacji Console.WriteLine(" (0, 1)",, ); Console.ReadKe(); A co, jeśli punktów jest więcej? A co, jeśli punkt może mieć kolor, nazwę, znacznik widoczności, etc? Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/24

namespace ConsoleApplication1 // tworzenie punktu p1 = new (); Rozwiązanie: stworzenie klas reprezentującej punkt. p1. = 3; p1. = 2; Tworzenie obiektu klas. // wpisanie informacji Console.WriteLine(" (0, 1)", p1., p1.); Console.ReadKe(); class Definicja klas. Marek Tabędzki Programowanie obiektowe i zdarzeniowe 2/24

namespace ConsoleApplication1 // tworzenie punktu p1 = new (); p1. = 3; p1. = 2; // wpisanie informacji Console.WriteLine(" (0, 1)", p1., p1.); Console.ReadKe(); class p1 Ta instrukcja powołuje do żcia obiekt strukturę zawierającą dwie wartości tpu int (zgodnie z definicją). Marek Tabędzki Programowanie obiektowe i zdarzeniowe 3/24

namespace ConsoleApplication1 // tworzenie punktu p1 = new (); p1. = 3; p1. = 2; p1 Kropka pozwala odwołać się do składników (składowch) obiektu. 3 2 // wpisanie informacji Console.WriteLine(" (0, 1)", p1., p1.); Console.ReadKe(); class (3, 2) Marek Tabędzki Programowanie obiektowe i zdarzeniowe 4/24

// tworzenie punktów p1 = new (); p2 = new (); p1. = 3; p1. = 2; p2. = 5; p2. = 1; Na podstawie tej samej definicji klas możem stworzć wiele obiektów. p1 p2 3 2 5 1 // wpisanie informacji Console.WriteLine(" 1 (0, 1)", p1., p1.); Console.WriteLine(" 2 (0, 1)", p2., p2.); Console.ReadKe(); class (3, 2) (5, 1) Marek Tabędzki Programowanie obiektowe i zdarzeniowe 5/24

class // przesuń punkt o wektor [d, d] public void Przesuń(int d, int d) += d; p1 += d; p1 = new (); p1. = 3; p1. = 2; 3 2 Klasa to nie tlko struktura. Klas mogą mieć metod. p1 4 2 (3, 2) Console.WriteLine(" (0, 1)", p1., p1.); p1.przesuń(1, 0); Console.WriteLine(" (0, 1)", p1., p1.); (4, 2) Marek Tabędzki Programowanie obiektowe i zdarzeniowe 6/24

class // przesuń punkt o wektor [d, d] public void Przesuń(int d, int d) += d; += d; p1 = new (); p1. = 3; p1. = 2; p1 Jak to działa? 3 2 Console.WriteLine(" (0, 1)", p1., p1.); p1.przesuń(1, 0); Console.WriteLine(" (0, 1)", p1., p1.); Marek Tabędzki Programowanie obiektowe i zdarzeniowe 7/24

class // przesuń punkt o wektor [d, d] public void Przesuń(int d, int d) d 1 d 0 += d; += d; p1 = new (); p1. = 3; p1. = 2; this Jak to działa? 3 2 Console.WriteLine(" (0, 1)", p1., p1.); p1.przesuń(1, 0); Console.WriteLine(" (0, 1)", p1., p1.); Marek Tabędzki Programowanie obiektowe i zdarzeniowe 8/24

class // przesuń punkt o wektor [d, d] public void Przesuń(int d, int d) += d; += d; Można też zapisać: this. += d; this. += d; p1 = new (); p1. = 3; p1. = 2; d 1 d 0 this Jak to działa? 4 2 Console.WriteLine(" (0, 1)", p1., p1.); p1.przesuń(1, 0); Console.WriteLine(" (0, 1)", p1., p1.); Marek Tabędzki Programowanie obiektowe i zdarzeniowe 9/24

class // przesuń punkt o wektor [d, d] public void Przesuń(int d, int d) += d; += d; p1 = new (); p1. = 3; p1. = 2; p1 Jak to działa? 4 2 Console.WriteLine(" (0, 1)", p1., p1.); p1.przesuń(1, 0); Console.WriteLine(" (0, 1)", p1., p1.); Marek Tabędzki Programowanie obiektowe i zdarzeniowe 10/24

class public void Przesuń(int d, int d)... public () Console.WriteLine("to jest konstruktor"); p1 = new (); p2 = new (); p1. = 3; p1. = 2; p2. = 5; p2. = 1; Specjalnm tpem metod jest konstruktor. Console.WriteLine(" 1 (0, 1)", p1., p1.); Console.WriteLine(" 2 (0, 1)", p2., p2.); Marek Tabędzki Programowanie obiektowe i zdarzeniowe 11/24 p1 3 2 p2 to jest konstruktor to jest konstruktor 5 1

class public void Przesuń(int d, int d)... public (int, int ) this. = ; this. = ; p1 = new (3, 2); p2 = new (5, 1); Przeważnie zadaniem konstruktora jest inicjalizacja zmiennch. Można też zapisać w mniej niejednoznaczn sposób: public (int, int ) = ; = ; p1 3 2 p2 5 1 Console.WriteLine(" 1 (0, 1)", p1., p1.); Console.WriteLine(" 2 (0, 1)", p2., p2.); Marek Tabędzki Programowanie obiektowe i zdarzeniowe 12/24

class public void Przesuń(int d, int d)... public (int, int ) this. = ; this. = ; p1 = new (3, 2); p2 = new (5, 1); 3 2 this Przeważnie zadaniem konstruktora jest inicjalizacja zmiennch. Console.WriteLine(" 1 (0, 1)", p1., p1.); Console.WriteLine(" 2 (0, 1)", p2., p2.); Marek Tabędzki Programowanie obiektowe i zdarzeniowe 13/24

class Ciekawostka: konstruktor domśln.... main... p = new (); class public (int, int ) this. = ; this. = ;... main... p = new (); Dlaczego przestało to działać? Marek Tabędzki Programowanie obiektowe i zdarzeniowe 14/24

class public void Przesuń(int d, int d)... public (int, int )... public override string ToString() return "jak to działa?"; p1 = new (3, 2); Console.WriteLine(" 0", p1); Specjalna metoda: ToString(). jak to działa? Można to też zapisać: Console.WriteLine(" 0", p1.tostring()); Marek Tabędzki Programowanie obiektowe i zdarzeniowe 15/24

class tekstowej reprezentacji public void Przesuń(int d, int d)... public (int, int )... obiektu. public override string ToString() return "(" + + ", " + + ")"; p1 = new (3, 2); Console.WriteLine(" 0", p1); Zadaniem metod ToString() jest zwrócenie (3, 2) Marek Tabędzki Programowanie obiektowe i zdarzeniowe 16/24

class private int, ; public void Przesuń(int d, int d) += d; += d; public (int, int ) = ; = ; public override string ToString() return "(" + + ", " + + ")"; p1 = new (3, 2); p1.przesuń(1, 0); Console.WriteLine(p1); Pojęcie hermetzacji. To, co jest istotne dla użtkownika klas, nosi nazwę interfejsu. Jest to funkcjonalność, z jakiej można skorzstać. Powinien bć publiczn i nie powinien się zbt często zmieniać. Marek Tabędzki Programowanie obiektowe i zdarzeniowe 17/24

class private int, ; public void Przesuń(int d, int d) += d; += d; public (int, int ) = ; = ; public override string ToString() return "(" + + ", " + + ")"; p1 = new (3, 2); p1.przesuń(1, 0); Console.WriteLine(p1); Pojęcie hermetzacji. Implementacja nie jest ważna dla użtkownika klas. Jest prwatną sprawą twórc klas i może zmieniać się bez ostrzeżenia. To ona sprawia, że interfejs działa. Marek Tabędzki Programowanie obiektowe i zdarzeniowe 18/24

Przkład: Konto. Marek Tabędzki Programowanie obiektowe i zdarzeniowe 19/24

<Window... Title="Konto" SizeToContent="Height" Width="350"> <Grid Margin="2"> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"/> <ColumnDefinition/> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="auto"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition Height="auto"/> <RowDefinition Height="auto"/> </Grid.RowDefinitions> <Label Margin="2">Saldo:</Label> <TetBo Name="ttSaldo" IsReadOnl="True" Grid.Column="1" Grid.ColumnSpan="3" Margin="2">0</TetBo> <Label Grid.Row="1" Grid.ColumnSpan="4" Margin="2">Operacje:</Label> <TetBo Name="ttKwota" Grid.Row="2" Grid.ColumnSpan="2" Margin="2"/> <Button Grid.Row="2" Grid.Column="2" Margin="2" Padding="10,3" Click="ClickWplac">Wpłać</Button> <Button Grid.Row="2" Grid.Column="3" Margin="2" Padding="10,3" Click="ClickWplac">Wpłać</Button> </Grid> </Window> Marek Tabędzki Programowanie obiektowe i zdarzeniowe 20/24

public partial class Window1 : Window Konto konto = new Konto(); private void ClickWplac(...) double kwota = double.parse(ttkwota.tet); konto.wpłać(kwota); ttsaldo.tet = konto.saldo().tostring(); private void ClickWplac(...) double kwota = double.parse(ttkwota.tet); konto.wpłać(kwota); ttsaldo.tet = konto.saldo().tostring(); class Konto Klasa Konto.... public void Wpłać(double kwota)... public void Wpłać(double kwota)... public double Saldo()... Marek Tabędzki Programowanie obiektowe i zdarzeniowe 21/24

class Konto private double suma; public void Wpłać(double kwota) suma += kwota; public void Wpłać(double kwota) suma -= kwota; public double Saldo() return suma; Klasa Konto. Marek Tabędzki Programowanie obiektowe i zdarzeniowe 22/24

class Konto private double suma; public void Wpłać(double kwota) suma += kwota; public void Wpłać(double kwota) if (kwota <= 0 kwota > suma) MessageBo.Show("Nie możesz wpłacić."); return; suma -= kwota; public double Saldo() return suma; Jaką to: Konto.Wpłać(250); ma przewagę nad tm? Konto.suma -= 250; Marek Tabędzki Programowanie obiektowe i zdarzeniowe 23/24

public partial class Window1 : Window public Window1() InitializeComponent(); Konto konto = new Konto(); Dodatki Cz wprowadzono liczbę? private void ClickWplac(object sender, RoutedEventArgs e) double kwota; if (double.trparse(ttkwota.tet, out kwota)) konto.wpłać(kwota); ttsaldo.tet = konto.saldo().tostring("f2"); ttkwota.tet = ""; ttkwota.focus(); private void ClickWplac(...)... Formatowanie: 2 miejsca po przecinku Przenoszenie kursora Marek Tabędzki Programowanie obiektowe i zdarzeniowe 24/24