Programowanie Komputerów

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

Programowanie Komputerów

Spis treści. 1 Zasady 2. 2 Literatura 3. 3 Język C# 4. 4 Podstawy składni C# 5. 5 Wyliczenia 9. 6 Switch Typy referencyjne 15

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

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

MATERIAŁY DO ZAJĘĆ II

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

Materiały do zajęć VII

Wykład 3 Składnia języka C# (cz. 2)

Programowanie obiektowe

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Zaawansowane programowanie w języku C++ Przeciążanie operatorów

Metodyka programowania. Podstawy C#

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

Wykład 5 Okna MDI i SDI, dziedziczenie

Plan wykładu. Tworzenie programów dla platformy.net. Predefiniowane typy C# Pierwszy program. Typy wartości i typy referencyjne

Wykład 4: Klasy i Metody

Aplikacje w środowisku Java

Programowanie obiektowe

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Programowanie obiektowe

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

PARADYGMATY PROGRAMOWANIA Wykład 3

Wykład 2 Składnia języka C# (cz. 1)

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

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

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

Klasy cd. Struktury Interfejsy Wyjątki

Microsoft IT Academy kurs programowania

Język C++ Różnice między C a C++

Programowanie w języku C++

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

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

PARADYGMATY PROGRAMOWANIA Wykład 2

Język C++ wykład VIII

PARADYGMATY PROGRAMOWANIA Wykład 4

Podstawy programowania. Podstawy C# Tablice

Dokumentacja do API Javy.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Programowanie obiektowe w VB cz 2

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Metody Metody, parametry, zwracanie wartości

Projektowanie klas c.d. Projektowanie klas przykład

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

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

1 Atrybuty i metody klasowe

Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz

Platformy Programistyczne Podstawy języka Java

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Programowanie obiektowe

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

Programowanie obiektowe

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Podstawy programowania skrót z wykładów:

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

Programowanie obiektowe

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Programowanie obiektowe i zdarzeniowe

Typy sparametryzowane

Klasy i obiekty cz II

TYPY GENERYCZNE (GENERICS)

Podstawowe części projektu w Javie

EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++

Identyfikacje typu na etapie. wykonania (RTTI)

Programowanie obiektowe

Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne

Dawid Gierszewski Adam Hanasko

Lab 9 Podstawy Programowania

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Wykład 4. Klasa List Kolejki Stosy Słowniki

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

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

Programowanie obiektowe. Obiekt Klasa Składnia klasy: Interfejsy Składnia interfejsu: Metody Składnia instrukcji Sub: Składnia instrukcji function:

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

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

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

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

Podstawy programowania. Programowanie obiektowe

Podstawy Programowania C++

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Tworzenie aplikacji w języku Java

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

Definicje klas i obiektów. Tomasz Borzyszkowski

C# - innowacja czy plagiat?

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Definiowanie własnych klas

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

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Metodyka programowania. Podstawy C#

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

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

Wykład 2: Podstawy Języka

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

Plik klasy. h deklaracje klas

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wykład 8: Obsługa Wyjątków

Języki i techniki programowania Ćwiczenia 2

ROZDZIAŁ 2. Operatory

Transkrypt:

Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28

1. Tablice w C# Indeksowane od zera Elementy mogą być dowolnego typu Tablice są typami referencyjnymi operator new tworzy tablicę i nadaje elementom wartości inicjalne. Strona 2 z 28

Tablice jednowymiarowe Deklaracja: string [ ] myarray ; Deklaracja i utworzenie: string [ ] myarray = new string [ 6 ] ; Deklaracja, utworzenie i inicjalizacja niestandardowymi wartościami: int [ ] myarray = new int [ ] {1, 3, 5, 7, 9; lub int [ ] myarray = {1, 3, 5, 7, 9; Strona 3 z 28

Tablice wielowymiarowe Zwykła prostokątna tablica: int [, ] myarray = new int [, ] {{1,2, {3,4, {5,6, {7,8; i tablica tablic (ang. jagged array) int [ ] [ ] myjaggedarray = new int [ 3 ] [ ] ; Deklaracja, utworzenie i inicjalizacja niestandardowymi wartościami: int [ ] [ ] myjaggedarray = { new int [ ] {1,3,5,7,9, new int [ ] {0,2,4,6, new int [ ] {11,22 ; Strona 4 z 28

2. w C# arytmetyczne: +, -, *, /, %, ++, --; logiczne i bitowe: &,, ^,!, ~, &&,, true, false, <<, >>; konkatenacji: +; Relacyjne: ==,!=, <, >, <=, >=; przypisania: =, +=, -=, *=, /=, %=, &=, =, ^=, <<=, >>=; dostępu:.; indeksu: []; rzutowania: (); warunkowy:?:; dodawamia i usuwania delegatów +, -; tworzenie obiektu: new; informacji o typie: as, is, sizeof, typeof; kontroli przepełnień: checked, unchecked; adresowania: *, ->, &; Tablice Strona 5 z 28

Operator is Użycie is sprawdza, czy obiekt jest kompatybilny z danym typem, tzn. czy rzutowanie nie zgłasza wyjątków. Uwaga: is nie bierze pod uwagę konwersji definiowanych przez użytkownika. Uwaga: operator is nie może być przeciążony Przykład 1. i f ( obj is string ){ Strona 6 z 28

Operator is składnia expression is type gdzie expression to wyrażenie typu referencyjengo Wynikiem jest true jeśli: expression jest różne od null lub rzutowanie do typu type nie powoduje zgłoszenia wyjątku. Strona 7 z 28

Operator as expr as type jest równoważne expr is type? (type)expr : (type)null string s = someobject as string ; i f ( s!= null ){ // someobject i s a string. Strona 8 z 28

Przykład 2. using System ; class Class1{ class MainClass{ static void Main (){ object [ ] objarray = new object [ 4 ] ; objarray [ 0 ] = new Class1 ( ) ; objarray [ 1 ] = h e l l o ; objarray [ 2 ] = 1 2 3. 4 ; objarray [ 3 ] = null ; for ( int i = 0 ; i < objarray. Length ; ++i ){ string s = objarray [ i ] as string ; Console. Write ( {0:, i ) ; i f ( s!= null ) Console. WriteLine ( + s + ) ; else Console. WriteLine ( not a s t r i n g ) ; / 0: not a string 1: hello 2: not a string 3: not a string / Tablice Strona 9 z 28

3. private dostęp wyłącznie z klasy zawierającej public bez ograncizeń dostępu protected dostęp wyłącznie z klasy zawierającej i jej klas potomnych internal dostęp wyłącznie w obrębie pakietu (the same assembly) protected internal dostęp w obrębie pakietu lub w klasie potomnej Strona 10 z 28

Dopuszczalność stosowania modyfikatorów Za wyjątkiem kombinacji protected internal nie można łączyć modyfiaktorów. Typy niezagnieżdżone (ang. top-level types) mogą być jedynie internal lub public; domyślnie internal. elementy wyliczenia (enum) domyślnie są public; nie dopuszcza się stosowania modyfikatorów. elementy klasy (class) domyślnie są private; dopuszcza się stosowanie wszystkich modyfikatorów. elementy struktury (stuct) domyślnie są private; dopuszcza się stosowanie modyfikatorów: public, internal i private. elementy interfejsu (interface) domyślnie są public; nie dopuszcza się stosowania modyfikatorów. Nie stosuje się modyfikatorów dostępu do przestrzeni nazw (namespace) Tablice Strona 11 z 28

4. ref out params Strona 12 z 28

Przykład użycia ref Przykład 3. class OutExample{ static void Method ( out int i ){ i = 42; static void Main (){ int value ; Method (out value ) ; // value = 42 Strona 13 z 28

Przykład użycia out Przykład 4. class RefExample{ static void Method ( ref int i ){ i = 42; static void Main (){ int val = 0 ; //parametr musi być zainicjalizowany Method ( ref val ) ; // val = 42 Strona 14 z 28

Przykład użycia params Przykład 5. Tablice public class MyClass { public static void UseParams (params object [ ] l i s t ) { for ( int i = 0 ; i < l i s t. Length ; i++ ) Console. WriteLine ( l i s t [ i ] ) ; Console. WriteLine ( ) ; public static void Main ( ) { UseParams (1, a, t e s t ) ; Strona 15 z 28

params może wystąpić tylko jeden raz. params może wystąpić tylko na końcu listy argumentów. Strona 16 z 28

Przeciążanie metod Możliwe jest przeciążanie metod różniących się sposobem przekazywania argumentu. class RefOutOverloadExample{ public void SampleMethod ( int i ) { public void SampleMethod ( ref int i ) { Strona 17 z 28

Nie mogą to być jednak ref i out. class CS0663 Example { public void SampleMethod ( ref int i ) { public void SampleMethod ( out int i ) { Powyższy kod spowoduje błąd kompilacji: compiler error CS0663: "cannot define overloaded methods that differ only on ref and out" Strona 18 z 28

5. Przykład 6. class TimePeriod { private double seconds ; public double Hours { get { return seconds / 3600; s e t { seconds = value 3600; class Program{ static void Main ( ) { TimePeriod t = new TimePeriod ( ) ; t. Hours = 24; System. Console. WriteLine ( Time in hours : + t. Hours ) ; Tablice Strona 19 z 28

Ograniczanie widzialności punktów dostępu (properties) Przykład 7. public string Name{ get{return name; protected s e t {name = value ; Uwaga: jeśli nie zdefiniowano metody set, to właściwość jest tylko do odczytu. Strona 20 z 28

6. (ang. indexers) Przykład 8. class Coll<T>{ private T [ ] arr = new T[ 1 0 0 ] ; public T this [ int i ]{ get{return arr [ i ] ; s e t { arr [ i ] = value ; class Program{ static void Main ( string [ ] args ){ Coll<string> s t r C o l l = new Coll<string >(); s t r C o l l [ 0 ] = Hello, World ; System. Console. WriteLine ( s t r C o l l [ 0 ] ) ; Słowo kluczowe this jest potrzebne w definicji indeksatora. Słowo kluczowe value, podobnie jak w metodzie set dla właściwości, jest podstawianą wartością. Tablice Strona 21 z 28

- przykład Przykład 9. public class YearClass{ const int StartDate = 1900; const int EndDate = 2050; int [ ] arr = new int [ EndDate StartDate + 1 ] ; Tablice public int this [ int num]{ get { return arr [ num StartDate ] ; s e t { arr [num StartDate ] = value ; Strona 22 z 28 public class Test{ public static void Main (){ YearClass yc = new YearClass ( ) ; yc [ 1 9 5 0 ] = 5 ;

Przykład 10. Tablice class DayCollection{ string [ ] days = { Sun, Mon, Tues, Wed, Thurs, Fri, Sat ; private int GetDay( string testday ){ int i = 0 ; foreach ( string day in days ){ i f ( day == testday ) return i ; i ++; return 1; public int this [ string day ]{ get{return (GetDay( day ) ) ; class Program{ static void Main ( string [ ] args ){ DayCollection week = new DayCollection ( ) ; System. Console. WriteLine ( week [ Fri ] ) ; System. Console. WriteLine ( week [ Made up Day ] ) ; Strona 23 z 28

Własności indeksatorów Indeksator może mieć więcej niż jeden parametr można przeciążać Strona 24 z 28

7. Łańcuchy znaków Typ string przechowuje ciągi znaków. Przykłady deklaracji: string h e l l o = Hello\nWorld! ; char l e t t e r = h e l l o [ 1 ] ; // e ; string a = \ u0068ello ; // h e l l o string path = @ c :\ Docs\Source\a. txt //zamiast c:\\docs\\source\\a. t x t Strona 25 z 28

Przykład 11. using System ; class Example { static void Method ( s ){ s+= world ; Console. WriteLine ( s ) ; // h e l l o world static void Main (){ string s= h e l l o ; Method ( s ) ; Console. WriteLine ( s ) ; // h e l l o Strona 26 z 28

Obiektu klasy string nie można zmienić - operatory podstawienia i konkatenacji tworzą nowe obiekty. string jest inną nazwą dla. Pomimo że string jest typem referencyjnym, to operatory == i!= dotyczą wartości, a nie referencji. Strona 27 z 28

Builder Klasa Builder jest zaimpementowana jako rozszerzalna tablica. Dołączanie znaków na koniec łańcucha powinno działać w zamortyzowanym czasie stałym. Przykład 12. using System ; using System. Text ; Tablice public sealed class App { static void Main ( ) { S t r i n g B u i l d e r sb = new S t r i n g B u i l d e r ( ABC, 5 0 ) ; // początkowy rozmiar 50 znaków. sb. Append(new char [ ] { D, E, F ) ; Console. WriteLine ( {0 chars : {1, sb. Length, sb. To ( ) ) ; // 6 chars : ABCDEF Strona 28 z 28