Programowanie Wizualne WYKŁAD 5

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

C++ wykład 4 ( ) Przeciążanie operatorów.
Programowanie obiektowe
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Programowanie obiektowe
Wzorce.
Generics w .NET 2.0 Łukasz Rzeszot.
Implementacja ekstensji klasy
MS Access 2003 Kwerendy Paweł Górczyński.
MS Access 2000 Kwerendy Piotr Górczyński 25/08/2001.
Serwery Aplikacji ASP .NET Web Objects Arkadiusz Popa.
.NET - możliwości Jarosław Balcer & Jan Góralski.
Platforma .Net i Vs.Net.
Struktury.
C++ wykład 2 ( ) Klasy i obiekty.
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Rozwój aplikacji przy wykorzystaniu ASP.NET
Podstawy programowania
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Wprowadzenie do obsługi programu PowerPoint
Lokalizacja i Globalizacja na witrynie w Visual Web Developer 2008 (ASP.Net) Daniel Literski.
Programowanie strukturalne i obiektowe
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
Wykonał: Michał Nikołajuk
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Farseer Physics Engine. Farseer Physics Engine jest silnikiem fizycznym napisanym dla platformy.NET. Został on zainspirowany przez silnik Box2D znany.
Programowanie obiektowe 2013/2014
18/11/ Języki programowania 1 Piotr Górczyński Kontrolki.
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Kurs języka C++ – wykład 3 ( )
Programowanie w języku C++
Projektowanie stron WWW
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Visual Basic w Excelu - podstawy
Kurs języka C++ – wykład 4 ( )
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Podstawy języka skryptów
Beata Sanakiewicz. Spis treści  Pierwsze spotkanie Pierwsze spotkanie  Ustawienia witryny Ustawienia witryny  Tło strony Tło strony  Teksty na stronie.
Komendy SQL do pracy z danymi
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Platforma .Net.
Programowanie Zaawansowane
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
Microsoft® Office Word
Dominik Benduski Michał Mandecki Podstawy Visual Basic w Excelu.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Programowanie Obiektowe – Wykład 6
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Typy wyliczeniowe, kolekcje
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
Podstawy programowania
PGO - Projektowanie i implementacja pierwszych klas
Zapis prezentacji:

Programowanie Wizualne WYKŁAD 5 Wojciech Pieprzyca

Język C# Język C# (C Sharp) ma wiele wspólnych cech z językiem C++, jednak niektóre aspekty zostały unowocześnione, dzięki czemu programowanie stało się nieco łatwiejsze i szybsze. Jest to język w pełni obiektowy, nie można w nim programować strukturalnie, wszystko co wykorzystujemy w ramach języka C# jest obiektem. C# został zaprojektowany przez zespół prowadzony pod kierunkiem Andersa Hejslberga dla firmy Microsoft. Program napisany w tym języku kompilowany jest do języka Common Intermediate Language (CIL), specjalnego kodu pośredniego. Skompilowany program wymaga środowiska uruchomieniowego .NET (analogicznie jak Java potrzebuje maszyny wirtualnej)

Cechy języka C# Kod programu jest zbiorem klas. Wszystkie klasy dziedziczą po klasie System.Object, która stanowi element nadrzędny hierarchii klas. Odśmiecanie pamięci - zarządzaniem pamięcią zajmuje się środowisko uruchomieniowe. Oznacza to, że nie ma konieczności ani potrzeby samodzielnego zajmowania się zwalnianiem pamięci po obiektach, które przestają być używane (w języku C++ realizowane było to za pomocą instrukcji delete) Bogata biblioteka klas BCL umożliwia rozwijanie aplikacji konsolowych, okienkowych (System.Windows.Forms), bazodanowych (ADO.NET), sieciowych (System.Net), w architekturze rozproszonej (WebServices) oraz dynamicznych aplikacji internetowych (ASP.NET). Brak konieczności używania wskaźników, co znacznie zmniejsza liczbę problemów jakie mogą pojawić się w czasie procesów pisania, testowania i uruchamiania aplikacji.

Środowisko MS Visual C# Środowisko Visual C# jest częścią większego pakietu środowisk przeznaczonych do programowania wizualnego Visual Studio .NET (wśród obsługiwanych języków, oprócz C#, są m.in. C++, J#, Basic). Dla wszystkich wersji językowych Microsoft wydał bezpłatne, uproszczone wersje Express, które można ściągnąć ze strony Microsoftu.

Solution – nowy projekt Elementem grupującym projekty w programie Visual C# jest tzw. Solution. W ramach Solution można stworzyć kilka projektów, które będą w jakiś sposób ze sobą połączone. Solution możemy utożsamiać z systemem informatycznym, czyli nie pojedynczą aplikacją, ale większą ich ilością. Aby stworzyć nowy projekt w ramach Solution wybieramy opcję File/New Project.

Typ projektu W następnym kroku musimy wybrać typ projektu spośród 6 typów. Najczęściej będzie to aplikacja konsolowa („Console Application”) lub aplikacja okienkowa(„Windows Application”). Oprócz tego ustalamy nazwę projektu.

Główny edytor Edytor składa się z wielu zakładek, które możemy dowolnie chować bądź rozwijać i zwijać. Jeśli klikniemy znaczek „X”, znajdujący się na każdej zakładce w prawym górnym rogu, to dana zakładka zostanie zamknięta. Aby ponownie otworzyć zakładkę, korzystamy z menu „View”.

Zakładka Edytor kodu Edytor kodu - wyświetla on zawartość plików tekstowych. Zazwyczaj będzie to kod źródłowy naszych programów. Visual C# tworzy automatycznie plik Program.cs. W zależności, jaki typ projektu wybierzemy, automatycznie generowany jest podstawowy szablon kodu.

Zakładka Solution Explorer Solution Explorer - za pomocą tej zakładki możemy dodawać nowe projekty do solution oraz dodawać i usuwać pliki, a także nawigować po strukturze i wybierać pliki, których zawartość chcemy wyświetlić. Możemy też w tym miejscu dodać do projektu nową klasę.

Otwieranie projektu Otwarcie projektu po ponownym uruchomieniu środowiska Visual C# możliwe jest poprzez menu Recent Projects, w którym program zapamiętuje projekty, którymi się ostatnio zajmowaliśmy. Można także użyć standardowo File/Open Project. Należy otwierać pliki z rozszerzeniem sln (solution).

Pierwszy program using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program static void Main(string[] args) System.Console.WriteLine("Hello world !"); System.Console.ReadLine(); }

Pierwszy program Instrukcja using wprowadza tzw. przestrzeń nazw. Są to zbiory zdefiniowanych klas, pogrupowanych w pewnego rodzaju „paczki”. Grupujemy klasy po to aby łatwiej je odnaleźć w przyszłości oraz aby uniknąć konfliktów. Możemy tworzyć własne przestrzenie nazw za pomocą polecenia namespace (w przykładowym programie utworzona została przestrzeń o nazwie ConsoleApplication1). Najczęściej korzysta się z predefiniowanych przestrzeni nazw, które zawierają odpowiednie klasy do swobodnego wykorzystania.

Pierwszy program Przykładowe, predefiniowane przestrzenie nazw: System – najważniejsza i najpowszechniejsza przestrzeń, definiuje podstawowe klasy oraz jest nadrzędna wobec wielu innych przestrzeni, System.Collections – przechowuje klasy będące kolekcjami, System.Data – obsługa operacji na danych, głównie do pracy z bazami danych, System.Drawing – obsługa grafiki (rysowanie na ekranie), System.IO – operacje wejścia/wyjścia, np. operacje na plikach, System.Web – klasy służące do tworzenia stron internetowych w technologii ASP.NET, System.Windows.Forms – programowanie w Windows, odpowiedzialne za obsługę formularzy

Pierwszy program Wprowadzając przestrzeń nazw za pomocą słowa using, możemy odwołać się bezpośrednio do nazw klas i obiektów w ramach danej przestrzeni, bez konieczności pisania nazwy przestrzeni. Dla przykładu zamiast pisać: System.Console.WriteLine("Hello world !"); System.Console.ReadLine(); możemy napisać: Console.WriteLine("Hello world !"); Console.ReadLine(); Wszystko dzięki temu, że użyliśmy instrukcji using System;

Pierwszy program Tak jak to zostało powiedziane na początku wszystkie programy napisane w języku C# mają charakter obiektowy. W najprostszym przypadku jest to klasa z jedną metodą Main. Podobnie jak w języku C++ metoda Main jest obowiązkowa i musi znaleźć się w każdym programie. Dodatkowo jest ona metodą statyczną, aby możliwe było jej wykonanie bez istnienia jakiegokolwiek obiektu tej klasy. class Program { static void Main(string[] args) System.Console.WriteLine("Hello world !"); System.Console.ReadLine(); }

Pierwszy program Za wypisanie tekstu odpowiedzialna jest metoda System.Console.WriteLine(”tekst”); Można także odczytać tekst z klawiatury za pomocą metody System.Console.ReadLine(); (w przypadku naszego programu oczekujemy po prostu na klawisz Enter).

Własna klasa Oczywiście nie musimy posługiwać się tylko wbudowanymi przestrzeniami nazw i klasami. Równie dobrze można stworzyć od podstaw własną klasę. Dobrą zasadą jest umieszczane każdej klasy w osobnym pliku. W celu stworzenia nowej klasy wywołujemy z zakładki Solution opcję Add/Class i nadajemy jej odpowiednią nazwę np. Osoby.

Własna klasa Wygenerowany został szablon klasy Osoba. using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Osoba } Widzimy wprowadzenie niektórych przestrzeni nazw systemowych i utworzenie definicji klasy Osoby.

Własna klasa Zgodnie z zasadami programowania obiektowego możemy utworzyć klasę z polami, konstruktorem i odpowiednimi metodami. Proszę zauważyć, że nie istnieją tutaj sekcje public, private i protected, ale każdej składowej i metodzie przydziela się taki modyfikator dostępu osobno. Dla konstruktora nie określa się zwracanego typu (np. void) ponieważ konstruktor nie może nigdy niczego zwrócić. class Osoba { private string imie; public Osoba(string _imie) { imie = _imie; } public void wyswietl() { System.Console.WriteLine(”Imie ”+imie); } }

Własna klasa Tworzenie obiektu danej klasy, podobnie jak w języku C++, odbywa się za pomocą operatora new. Treść poniższego kodu możemy wpisać np. w metodzie Main. System.Console.WriteLine(”Podaj imie1:”); string imie1 = System.Console.ReadLine(); System.Console.WriteLine(”Podaj imie2”); string imie2 = System.Console.ReadLine(); Osoba o1 = new Osoba(imie1); Osoba o2 = new Osoba(imie2); o1.wyswietl(); o2.wyswietl(); System.Console.ReadLine(); Operatorem dostępowym do składowych i metod klasy jest znak kropki np. o1.wyswietl();

Własna klasa Rozbudujmy naszą klasę o dodatkowe pola. Zmieni się także konstruktor oraz metoda Wyswietl. class Osoba { private string imie, nazwisko; private int wiek; private double pensja; public Osoba(string _imie, string _nazwisko, int _wiek, double _pensja) imie = _imie; nazwisko = _nazwisko; wiek = _wiek; pensja = _pensja; }

Własna klasa public void wyswietl() { System.Console.WriteLine(”Imie ”+imie); System.Console.WriteLine(”Nazwisko ”+nazwisko); System.Console.WriteLine(”Wiek ”+wiek); System.Console.WriteLine(”Pensja ”+pensja); } Musimy także dokonać odpowiednich zmian w wywołaniu konstruktora dla tworzonych obiektów typu Osoba. Osoba o1 = new Osoba("Marek","Nowak",30,3523.23); Osoba o2 = new Osoba("Piotr","Kowalski",33,3332.21);

Właściwości W języku C++, aby zachować zasady hermetyzacji danych, odwoływaliśmy się do składowych prywatnych poprzez specjalne metody akcesorowe, które odpowiednio odczytywały te składowe bądź nadawały im pożądaną wartość. Przykład klasy z dwoma liczbami: class test { int a,b; public void wpiszA(int _a) a = _a; }

Właściwości public void wpiszB(int _b) { b = _b; } public int pobierzA() return a; public int pobierzB() return b;

Właściwości Instancję (obiekt) takiej klasy możemy stworzyć w następujący sposób: test t = new test(); //wpisujemy wartości 2 i 3 do składowych a i b t.wpiszA(2); t.wpiszB(3); //pobieramy wartości składowych int a = t.pobierzA(); int b = t.pobierzB(); System.Console.WriteLine(a+” ”+b);

Właściwości Tworzenie w ten sposób metod akcesorowych jest dość uciążliwe. Alternatywnym sposobem jest użycie mechanizmu właściwości. Są to specjalne metody, które służą do odczytu i zmiany wartości składowych klasy. Właściwość składa się z dwóch akcesorów: get i set. Akcesor set pozwala ustalić wartość właściwości. W akcesorze set używamy słowa value, które reprezentuje argument podany przez użytkownika jako wartość dla danej składowej. Akcesor get zwraca wartość danej składowej.

Właściwości public int A { get { return a; } set { a = value; } } public int B     {         get         {             return b;         }         set         {             b = value;         }     }

Właściwości Teraz utworzenie i wykorzystanie obiektu klasy test może wyglądać następująco: test t = new test(); //wpisujemy wartości 2 i 3 do składowych a i b (działa akcesor set) t.A = 2; t.B = 3; //pobieramy wartości składowych (działa akcesor get) int a = t.A; int b = t.B; System.Console.WriteLine(a+” ”+b);

Tablice W języku C# tablice mogą mieć rozmiar definiowany dynamicznie tzn. w trakcie uruchomienia programu. Co ważne nie wymaga to bezpośredniego użycia wskaźników. //zapytanie o liczbę elementów, która ma znaleźć się w tablicy System.Console.WriteLine("Ilosc elementow:"); string ilosc = System.Console.ReadLine(); //utworzenie tablicy o odpowiednim rozmiarze //metoda int.Parse konwertuje tekst na liczbę całkowitą integer int n = int.Parse(ilosc); int[] tab = new int[n];

Tablice //pętlą z zapytaniem o wartość poszczególnych elementów for (int i = 0; i < n; i++) { System.Console.WriteLine("Podaj element "+i+" = "); tab[i] = int.Parse(System.Console.ReadLine()); } //pętlą wyświetlająca wartość wpisanych elementów System.Console.WriteLine("Element "+i+" = "+tab[i]); System.Console.ReadLine();

Kolekcje Kolekcję spełniają podobne zadanie do tablic tzn. przechowują zbiór elementów, są jednak pewne istotne różnice: Kolekcje dają nam większa swobodę kosztem wydajności tzn. operacje na tablicach są szybsze, ale samo zakodowanie operacji może być łatwiejsza za pomocą kolekcji niż tablic. Nie musimy ustalać rozmiaru listy tak jak to się robi w tablicach. Jedna kolekcja może zawierać elementy różnych typów. Podstawowym rodzajem kolekcji jest ArrayList. Element dodawany jest do kolekcji ArrayList za pomocą metody Add(element). Kolekcje mają także wiele wbudowanych metod, ułatwiających programowanie np. metoda Sort() automatycznie dokonuje sortowania zawartości listy. Używanie kolekcji wymaga dodania przestrzeni nazw System.Collections.

Kolekcje //deklaracja kolekcji typu ArrayList ArrayList lista = new ArrayList(); //dodanie elementów do listy lista.Add(2); lista.Add(2.5); lista.Add("tekst"); lista.Add('a'); //wyświetlenie elementów listy //właściwość Count określa liczbę elementów na liście for (int i = 0; i < lista.Count; i++) System.Console.WriteLine(lista[i]);

Pętla foreach Kolejną różnicą w stosunku do C++ jest możliwość użycia pętli foreach. Jej składnia jest następująca: foreach(typ element in kolekcja) { //ciało pętli } Przykładowo przeglądanie listy z ostatniego programu za pomocą pętli foreach mogłoby wyglądać tak: foreach (Object element in lista) { System.Console.WriteLine(element); Object – oznacza dowolny typ obiektu, związane jest to z tym, że na naszej liście występują obiekty różnych typów.

Przykład z kolekcją Przykładowy program będzie: wczytywał 4 liczby od użytkownika i dopisywał je do listy typu ArrayList. Wyświetlał liczby na ekranie za pomocą pętli foreach Posortuje listę za pomocą metody Sort() i wyświetli ją na ekranie. Odwróci listę za pomocą metody Reverse() i wyświetli ją na ekranie. Usunie drugi element z listy za pomocą metody RemoveAt(i) i dokona wyświetlenia listy na ekranie.

Przykład z kolekcją //deklaracja listy i wczytanie od użytkownika jej elementów ArrayList liczby = new ArrayList(); int x; for (int i=0; i<4; i++) { System.Console.WriteLine(”Podaj liczbe”+i+”:”); x = int.Parse(System.Console.ReadLine()); liczby.Add(x); } //wyświetlenie listy foreach (int liczba in liczby) System.Console.WriteLine(liczba);

Przykład z kolekcją //sortowanie listy liczby.Sort(); //wyświetlenie listy foreach (int liczba in liczby) { System.Console.WriteLine(liczba); } liczby.Reverse();

Przykład z kolekcją //usunięcie elementu o indeksie 2 liczby.RemoveAt(2); //wyświetlenie listy foreach (int liczba in liczby) { System.Console.WriteLine(liczba); }