SlideShare une entreprise Scribd logo
1  sur  139
Programske paradigme
 Programska paradigma je osnovni stil računalnog
  programiranja
 Paradigme se razlikuju u konceptu i razini apstrakcije
  reprezentiranja elemenata programa (kao što su
  funkcije, varijable, konstante, objekti...) i koracima
  sastavljanja proračuna (kao što su zadaci, evaluacije,
  tokovi podataka...)
Programske paradigme
 Programski jezik može podržavati više paradigmi npr.
 C++ može biti proceduralni ili objektno-orijentirani
Usporedba – borilačke vještine
 Programerska paradigma se može usporediti sa
 borilačkim vještinama (stil i oružje sa kojim se borac
 bori, može se usporediti sa stilom i alatom koji
 programer koristi)
Povijest računalnog programiranja
 Inicijalno računala su se strojno programirala
 Programiranje binarnim kodom
 Programiranje putem asemblerskog jezika
 Programiranje putem proceduralnih jezika - C, Basic...
 Programiranje putem objektno-orijentiranih jezika –
   Java, C#...
..........................................................................
Programske paradigme
 Proceduralna paradigma
 Objektno orijentirana paradigma
                      te
 Funkcijska paradigma
 Konceptualno orijentirana paradigma
 Logička paradigma
....................................................................
Proceduralna paradigma
 Program se sastoji od niza deklaracija, naredbi
  pridruživanja te poziva predefiniranih kao i vlastitih
  potprograma
 Potprogrami omogućuju smisleno strukturiranje
  programa
 Primjeri: Basic ili C
 Problem sa ovakvim pristupom programiranju su sve
  veća kompleksnost današnjih programa: što je
  program veći - teže ga je održavati.
Objektno-orijentirana paradigma
 Kod objektno orijentiranog programiranja (OOP) program
  se sastoji od skupa objekata koji međusobno komuniciraju
 Objekt je programski entitet koji je sposoban primati,
  obrađivati i slati poruke
 Objektno orijentirani model je izuzetno pogodan za
  opisivanje današnjih sustava koji se najčešde sastoje od
  jasno odvojenih, samostalnih cjelina koje međusobno
  komuniciraju i razmjenjuju obrađene podatke
 Jedan od takvih primjera koji se najčešde navodi je
  grafičko korisničko sučelje (GUI).
Objektno-orijentirana paradigma
 Razvoj OOP-a započet je 60 godina prošlog stoljeda, a
  popularnost objektno orijentirane paradigme porasla je
  naglo s razvojem grafičkih korisničkih sučelja, te razvojem
  programskog jezika C++
 Dodatan rast popularnosti dogodio se u 90-tima pri
  razvoju računalnih igara
 Primjeri igara su: Doom III, Starcraft, Diablo, Warcraft III i
  World of Warcraft
Osnovni temelji OOP-a
 Osnovni temelji objektno orijentirane paradigme su prije
  svega objekt i klasa (razred) te metode, nasljeđivanje,
  enkapsulacija, polimorfizam, apstrakcija i sučelja.
 Objekt je naziv za skup svojstava koja možemo objediniti
  u smislenu cjelinu.
 Klasa je skup pravila koja propisuju od čega je pojedini
  objekt sagrađen te kakva su njegova svojstva.
Osnovni temelji OOP-a
 Konceptom objektnog programiranja uvodi se mogudnosti
  definiranja novih korisničkih tipova – klasa. Klase su
  temelj objektno orijentiranog programiranja.
 Ideja uvođenja objekata u programiranje došla je
  analiziranjem načina na koji funkcionira stvarni svijet.
  Promatanjem svijeta oko sebe dodi demo do zaključka da
  se mnoge stvari mogu vrlo jednostavno modellirati
  pomodu objekata.
Primjer
Klasa: Automobil
Broj objekata: 10
Atributi(svojstva):
Boja, težina, broj
konja...
Metode: Otvori
vrata, upali
automobil, otvori
prozor, uključi
brisače...
klasa i objekt
 Klasa - zamišljena svojstva automobila
 Objekt - stvarni automobili na slici
Osnovni temelji OOP-a
 Objekti međusobno razmjenjuju informacije i traže
  jedan od drugoga usluge. Pritom okolina objekta ništa
  ne mora znati o njegovom unutarnjem ustrojstvu.
 Svaki objekt ima javno sučelje kojim se definira
 njegova suradnja s okolinom. Ono određuje koje
 informacije objekt može dati, te u kojem formatu.
 Također su definirane i sve usluge koje objekt može
 pružiti.
Osnovni temelji OOP-a
 Funkcija koja inicijalizira objekt naziva se konstruktor
 Kada objekt više nije potreban posebna funkcija klasa
  pod nazivom destruktor uredno će uništiti objekt
Apstrakcija
 Apstrakcija je određivanje bitnih osobina i funkcionalnosti
  bez uvođenja nepotrebnih detalja ili objašnjenja. Pomoću
  ovog procesa modeliraju se najvažniji elementi (atributi) i
  opis pripadnog ponašanja (metode) neke klase.
Primjer
Primjer
Enkapsulacija (učahurivanje)
 Enkapsulacija je povezivanje bitnih informacija i elemenata
  nekog objekta te njegovog ponašanja (metoda) u
  povezane, izolirane cjeline na način da unutrašnji ustroj
  nije vidljiv vanjskom svijetu

1. public: elementi su dio javnog sučelja klase i dostupni su
   svim drugim klasama
2. private: elementi su dostupni samo klasi u kojoj su
   deklarirani.
3. protected: elementi su dostupni klasi u kojem su
   deklarirani i podklasama.
Primjer
Nasljeđivanje
 Nasljeđivanje(eng. inheritance) je tehnika kojom se
  definiranje neke klase vrši korištenjem definicije
  postojeće klase (koja se naziva bazna klasa)
 Tako dobivena klasa naziva se izvedena klasa
 Kada se pomoću izvedenih klasa deklarira neki objekt,
  njegove članske funkcije i varijable postaju funkcije i
  varijable koje su kreirane u baznoj klasi
Primjer
 Kada bi imali klasu vozilo, koji bi sve njegovi atributi
  bili?
 Kada bi imali klasu vozilo, koje bi sve njegove
  funkcije(metode) bile?
Primjer
using System;
public class Pravokutnik
{
    public Pravokutnik()
    {
              Console.WriteLine("Pravokutnik konstruktor.");
    }
    public void povrsina(float a, float b)
    {
              float P = a*b;
              Console.WriteLine(P);
    }
    public void opseg (float a, float b)
    {
              float O= 2*a+2*b
              Console.WriteLine(O)
    }
}
Primjer
public class Kvadrat : Pravokutnik
{
  public Kvadrat()
  {
        Console.WriteLine("Kvadrat konstruktor");
  }
  public static void Main()
  {
        Kvadrat kvadrat = new Kvadrat();
        kvadrat.povrsina(4,4)
        kvadrat.opseg (2,2)
  }
}
Nasljeđivanje i konstruktor
 Konstruktor služi da bi kreirirali objekt nekog klasa
 Svaka klasa bi trebala imati svoj konstrutor
Polimorfizam
 Polimorfizam je, uz enkapsulaciju, apstrakciju i
  nasljeđivanje trede važno svojstvo koje objektno
  orijentiran jezik mora podržavati
 Bez nasljeđivanja nema polimorfizma, a nasljeđivanje bez
  polimorfizma gotovo da i nema smisla

 poli – mnogo, form - oblici => više oblika
Primjer
 Neka je bazna klasa Geometrijski_lik, a izvedeni klasi
  su Krug i Pravokutnik
 Svaki Geometrijski_lik ima svoju povrsinu, ali se ona
  za Krug izračunava na drugačiji način nego za
  Pravokutnik
 Za krug je radijus * radijus * PI, a za pravokutnik je
  duljina*širina, ali općenito svojstvo svakog
  geometrijskog lika je njegova površina kao što je
  prikazano na slici
Sučelje
 Objekt definira svoju interakciju s vanjskim svijetom kroz
  funkcije koje podržava
 Npr. gumbi na televizoru čine njegovo sučelje koje odvaja
  elektroniku i način na koji je izvedena od krajnjeg
  korisnika (nas), koji želimo gledati neki program
 Bez obzira na proizvođača televizora i način na koji je
  elektronika organizirana mi očekujemo da demo svaki
  televizor modi upaliti, ugasiti, promijeniti kanal, smanjiti
  ili povedati glasnodu itd
Primjer
Primjer
Neno Dodig
Osnove C# programskog jezika
 C# je dizajniran da bude:
    Jednostavan
    Siguran
    Objektno-orijentiran
    Internet-centriran
    Brz
C# jednostavnost i sigurnost
 C# je jednostavan programski jezik sa samo 80
  ključnih riječi i desetak tipova
 Siguran je za upis koda jer debuger traži greške
  direktno pri upisu koda, a ne samo nakon pokretanja
Hello World
namespace HelloWorld
{
  class HelloWorld
  {
       static void Main()
       {
               // Korištenje objekta Console
               System.Console.WriteLine("Hello world");
       }
  }
}
Metoda
void mojaMetoda(int param1, string param2)
{
  //kod ide ovdje
}
Poziv metode
int x = 5;
string mojString = “Hello”;
mojaMetoda(x, mojsString);
Komentari
 C komentari /* */
 C++ komentari //
 XML dokumentacijski komentari ///
Deklaracija varijabli
 int prva, druga, treca;
 ili
 int prva=10, druga, treca=0;
Console.WriteLine(printf)
 Console.WriteLine(“Pozdrav!”);


 int godine=56;
 Console.WriteLine(“Broj godina je {0}”, godine);



 int broj1 = 5, broj2 = 7, broj3=9;
 Console.WriteLine(“prvi: {0}, drugi: {1}, treci: {2}, opet
  prvi: {0}", broj1, broj2, broj3);
Console.ReadLine(gets)
 string godine_string = Console.ReadLine();
 int godine_integer = Convert.ToInt32(godine_string);
Konstante
 const int brojdana = 7;
Tipovi podataka
if uvijet
if ( broj > 40 )
{
   Console.WriteLine(“Broj je veci od 40”);
}
else
{
   Console.WriteLine(“Broj je manji ili jednako 40”);
}
for petlja
for ( int x = 5; x < 10; x++ )
{
  Console.WriteLine(“x: {0}”, x);
}
While petlja
while (i < 10)
{
  Console.Write("{0} ", i);
  i++;
}
Do-while petlja
do
{
  Console.Write("{0} ", i);
  i++;
} while (i < 10);
Operatori
 C# podržava:
 Relacijske operatore (>, <, ==)
 Operatore dodjele (=)
 Matematičke operatore(*,/,-,+)
 Logičke operatore (&&, ||, !)
Relacijski operatori
 Jednako (==)
 Nije jednako (!=)
 Veće (>)
 Veće ili jednako (>=)
 Manje (<)
 Manje ili jednako (<=)
Matematički operator +
 string tekst1 = “hello”;
 string tekst2 = “ world”;
 string s3 = s1 + s2;
Kratko pisanje matematičkih
operatora
 a += b;
 a -= b;
 a *= b;
 a /= b;
 a %= b;
Logički operatori
 && (Logičko I)
 || (Logičko ILI)
 ! (Logičko NE)
Web stranica
 http://www.microsoft.com/visualstudio/en-
  us/products/2010-editions/visual-csharp-express
 www.google.hr
Podržani operacijski sustavi
 Windows XP (x86) with Service Pack 3 - all editions
    except Starter Edition
   Windows Vista (x86 & x64) with Service Pack 2 - all
    editions except Starter Edition
   Windows 7 (x86 & x64)
   Windows Server 2003 (x86 & x64) with Service Pack 2
   Windows Server 2003 R2 (x86 & x64)
   Windows Server 2008 (x86 & x64) with Service Pack 2
   Windows Server 2008 R2 (x64)
Minimalna konfiguracija
 Computer that has a 1.6GHz or faster processor
 1 GB (32 Bit) or 2 GB (64 Bit) RAM (Add 512 MB if
    running in a virtual machine)
   3GB of available hard disk space
   5400 RPM hard disk drive
   DirectX 9 capable video card running at 1024 x 768 or
    higher-resolution display
   DVD-ROM Drive
Podržani proizvodi u Express verziji
 Visual Basic Express
 Visual Web Developer Express
 Visual C++ Express
 Visual C# Express
 SQL Server Express
 Express for Windows Phone
Sintaksa
 tip[] identifikator;


 Primjer: int[] mojNizIntegera = new int[5];
Nizovi kao objekt
int[] mojePoljeIntegera = new int[50];

       mojePoljeIntegera[0] = 10;
       mojePoljeIntegera[1] = 20;
       mojePoljeIntegera[2] = 15;
       mojePoljeIntegera[3] = 90;
       mojePoljeIntegera[4] = 50;
       mojePoljeIntegera[5] = 60;

       Console.WriteLine(mojePoljeIntegera.Max().ToString());
       Console.WriteLine(mojePoljeIntegera.Min().ToString());
       Console.WriteLine(mojePoljeIntegera.Average().ToString());

      foreach(int i in mojePoljeIntegera)
      {
        Console.WriteLine(i.ToString());
      }

       Console.ReadLine();
Foreach petlja
foreach (int i in mojePoljeIntegera)
{
  Console.WriteLine("{0}", i);
}

foreach(int i in mojePoljeIntegera)
{
  Console.WriteLine(i.ToString());
}
.NET framework
 Jednostavnost razvoja aplikacija
 Brzina razvoja aplikacija
 Sigurnije aplikacije
 Višejezično programiranje
Slojeviti model .NET Frameworka
CLR
 CLR = Common Language Runtime
 Aplikacija koja se “vrti” na Windowsima
 Najvažniji dio .NET-a
Što radi CLR?
 Provjerava sigurnost
 Učitava program
 Kešira program – svako novo pokretanje je puno brže
  od inicijalnog!
 Oslobađa resurse
 Koristi se sakupljac smeca (engl. Garbage collector) –
  briše objekte koji se više ne koriste
 Sprjecava se pojava “curenja memorije” (engl. memory
  leaks) – česta pojava u C++-u
Što radi CLR?
 Provodi JIT (just in time compilation) kompilaciju
  1.   Program (npr. napisan u C#) kompilira u MSIL
       (Microsoft Intermediate Language)
  2.   Prilikom prvog izvršavanja programa, kôd u - MSIL se
       prevodi u strojni kod platforme – to je zapravo JIT
       kompilacija
  3.   Svako slijedece izvršavanje aplikacije uzima strojni kôd
       iz keša (cachea) – ubrzanje
Što radi CLR?
 Pruža višejezično okruženje
    CTS – Common Type System (Dio CLR-a)
    Nasljedivanje kroz više jezika (npr. u C# se naslijedi
     klasa napravljena u VB.NET)
BCL (Base Class Library)
 Sastoji se od stotina klasa koje developeru stoje na
  raspolaganju
 klasi su grupirani u prostore imena (engl. namespace)
  – npr:
   System.Data – rad s podacima
   System.Collections – rad s kolekcijama (skupovima
    objekata)
   System.IO – rad s datotekama i mapama
 Zamjena za Windows API
Prostori imena (namespace)
 “Pretinci” u koje se smještaju klasi
 Imaju hijerarhijsku strukturu
    Na vrhu je System
Programski jezici u .NETu
 Odabir jezika u kojem se programira je stvar stila!
 Program napisan u bilo kojem jeziku na kraju postaje program u
  MSIL-u
 Bitno je da kompajler za željeni jezik podržava CTS, tj. da
  napisan po CLS – Common Language Specification
 Danas postoji podrška za:
      C#
      VB
      Eiffel
      Fortran
      Cobol
      JScript
      J#
      I još mnogo drugih …
Razvoj aplikacija u .NET-u
 Visual Studio IDE
 Notepad + komandna linija
 Alternativna razvojna okruženja
Slojevi više razine – ADO.NET
 U njega spadaju klasi iz System.Data prostora imena
 Glavno pitanje na koje odgovara: kako dohvatiti
  podatke i raditi s njima?
 Dva glavna pružatelja podataka (engl. data provider):
   SQL Server pružatelj podataka
   OLEDB pružatelj podataka
Slojevi više razine – ASP.NET
 klasi za razvoj Web aplikacija
 Koristi ADO.NET i BCL kako bi stvorio vlastite klase
 Njime se stvaraju tzv. Web Form stranice
   Svaka Web Form stranica sastoji se od:
       aspx datoteke (u njoj je HTML)
       Datoteke s kôdom (npr .cs ili .vb) – tzv. code behind
 U VS IDE-u se koristi tzv. drag & drop za stvaranje
  stranica
   Npr. dovuci gumb
Slojevi više razine – Windows
Forms
 klasi za razvoj MS Windows aplikacija (tzv. rich
    Windows application)
   Jako dobra podrška za razvoj korisničkih sučelja
   Glavni prostor imena je System.Windows.Forms
   U VS IDE-u se koristi tzv. drag & drop za stvaranje
    formi
   Windows Forme su moćnije od Web Formi
     Web Forme su ograničene na ono što pruža standardni
      HTML
     Windows Forme pružaju sve ono što i Windowsi
Slojevi više razine – Web servisi
 Nova i obecavajuća tehnologija
 Web servis je komponenta (komad kôda)
   Pokrece se preko Interneta (preko HTTP-a)
 Web servis se piše u bilo kojem jeziku (npr. C#)
 Web servisi se obavezno pokrece pomocu XML –
  SOAP-a
   To znači da web servis napisanu u .NET-u na Windows
    serveru može bez problema pokrenuti neki klijent
    napisan u PHP-u s UNIX-a
Uvod u C#
Pokretanje Visual studio-a
 Pokrenite Visual Studio
 Imate ikonu na radnoj površini ili idete na start-
  >programs->Microsoft Visual Studio
Pokretanje projekta
 Kada se upali Visual Studio
 Odaberite padajući izbornik File->New->Project


 Nakon otvaranja prozora za odabir novog projekta –
 odaberite C# windows projekt s lijeve strane i
 odaberite console application sa desne strane te gumb
 OK
Pokretanje projekta
 Kada se upali Visual Studio
Pokretanje projekta
 Odaberite padajući izbornik File->New->Project
Odabir projekta
 U ovom prozoru možete odabrati vrstu, naziv i lokaciju
  projekta
Pokretanje projekta
 Nakon otvaranja prozora za odabir novog projekta –
 odaberite C# windows projekt s lijeve strane i
 odaberite console application sa desne strane, na dnu
 upišite naziv projekta: vjezba1
Izgled otvorenog projekta
using
 using je najsličniji #include naredbi iz C prog.jezika.
namespace
 “Pretinci” u koje se smještaju klase(class ili klasi)
Naziv klase(klasa ili class)
 Klasa Program
static void Main(string[] args)
 static void Main(string[] args)
 Kao funkcija Main u C programskom jeziku
 void znači da funkcija nema povratnu vrijednost tj.
  povratna vrijednost je NULL
 static ćemo obrađivati kasnije u predavanjima
 string[] args – pošto je konzolna aplikacija, preko
  command prompta može primiti ulazne argumente i staviti
  ih u polje args koje je tipa string
 PRIMJER: naredba format c: /q
      Naredba koja služi za formatiranje
      Poziva program format sa argumentima c: i /q
      argument c: znači da program formatira particiju c:
      argument /q znači da se napravi brzo formatiranje
static void Main(string[] args)
 Mi u pravilu nećemo slati argumente svojim
  programima, ali to možemo napraviti
 Pravi primjer ćete dobiti pri kraju drugog sata!!!
      foreach (string tekst in args)
      {
             Console.WriteLine(tekst);
      }
       Console.ReadLine();
Hello World!
 Prvi program
 Umjesto naredbe printf(); mi ćemo koristiti metodu
    konzole pod nazivom WriteLine
   Upišite unutar main-a:
   Console
   Primjetiti ćete da Visual Studio predlaže što možete
    upisati i ako je odabrano ono što želite možete dovršiti
    bez pisanja pritiščući tipku tab(tabulator)
   Nakon upisivanja Console upišite točku
   Console.
Console
 Prvo polugodište ćemo raditi aplikacije u konzoli
 Kada nakon naziva objekta(u našem slučaju Console)
  pritisnemo točku, dobiti ćemo popis mogućih metoda
  i atributa tog objekta
 Prođite malo po njima te pogledajte koje sve metode i
  atribute ima objekt Console
WriteLine
 Da bi ispisali nešto u konzolu možemo koristiti metodu
    npr. WriteLine kao i neke druge
   Nakon odabira Console.WriteLine otvorite zagradu (
   Tu ćemo vidjeti da metoda WriteLine ima 19 overload
    mogučnosti ( o tome kasnije na predavanjima)
   Nakon otvaranja zagrade upišite navodnike i tekst: Hello
    World! te zatvorite navodnike, zatvorite zagradu i stavite
    točku-zarez
   Console.WriteLine("Hello World");
   Nakon toga dodajte liniju Console.ReadLine();
   Ta naredba će nam zadržati ekran kao naredba getch() u C
    programskom jeziku
Pokrenite izvršavanje tipkom F5
 Ili pritiskom na zeleni gumb start
Atributi i metode
 Metode će biti označeni ljubičastom kockicom kao
 npr. SetWindowSize, dok su atributi označeni malim
 prozorom kao npr. Title
Razlika u korištenju
 Uglavnom metode se koriste tako da se pozovu
 Npr. Console.WriteLine();
 One mogu i ne moraju(zavisno o metode) primati
    argumente npr. Console.WriteLine(“Tekst”);
   U prethodnoj liniji argument je string “Tekst”
   Dok se atributi postavljaju uglavnom tako da:
   Console.Title = "Naslov prozora";
   Postavimo vrijednost atributa kao što je npr. Title
   Nekim atributima možemo samo pogledati vrijednost
   Npr. Console.WriteLine(Console.CapsLock);
   Tako bi doznali da li je pritisnuta tipka CapsLock
Pazite!!!!
 Na tip podataka koje metode primaju kao atribute
 Na tip podataka koju metoda vraća
 Na tip podataka argumenta


 Ako je argument int onda moze npr. biti
    Console.WindowWidth = 30;
 Ali kao je argument tipa ConsoleColor onda moze npr.
 biti
   Console.BackgroundColor = ConsoleColor.DarkCyan;
Zadatci
 Ispišite neki drugi tekst
 Saznajte i isprobajte zašto nam služe metode konzole:
    Console.Clear();
    Console.Write();
    Console.Beep();
    Console.ReadLine();
    Console.ResetColor();
    Console.SetCursorPosition(int left, int top);
    Console.SetWindowSize(int width, int height);
Zadatci
 Saznajte i isprobajte zašto nam služe atributi konzole:
    Console.Title
    Console.BackgroundColor
    Console.CapsLock
    Console.ForegroundColor
    Console.NumberLock
    Console.WindowHeight
    Console.WindowWidth
Što je debuggiranje?
 Pronalaženje grešaka i nedostataka u programskom
  kodu
 Naziv potječe od stvarnog događaja – kod jednog od
  prvih računala “Mark I” dogodio se kvar u radu. Nakon
  dugotrajne potrage za greškom programeri su otkrili
  da je kvar izazvala jedna buba koja se uvukla u
  računalo. Otada se svaka greška ili nedostatak u radu
  računala zove “bug”.
Vrste pogrešaka kod programiranja
 Sintaksne
    Visual Studio će u gotovo svim situacijama pronaći
     pogrešku
    formalne greške u jeziku
 Semantičke
    Ako je program sintaksno dobar, može doći do pogreške
     prilikom pokretanja programa
    program ne radi ono za što je namijenjen
 Greške izuzetka
    pojavljuju se prilikom korištenja programa, neizbježne
     su, a uzroci mogu biti različiti
Sintaksne pogreške
 osnovna vrsta grešaka, nastaje pogreškom u jeziku, tj.
  u pogrešno upisanom programskom kodu (npr.
  Nedostatak neke zagrade, nepravilno upisana ključna
  riječ naredbe ili dr.)
 Ove greške prilikom debug-iranja budu prikazane u
  prozoru s popisom grešaka (Error list)
Semantičke pogreške
 Kod njih su naredbe formalno ispravno napisane, pa ih
  je teže pronaći od sintaksnih grešaka (ne vide se u
  prozoru Error list prilikom debug-iranja)
 To su greške značenja – program ne radi ono što bi
  trebao raditi, nego nešto drugo
 Mogu biti uzrokovane logičkim pogreškama u
  programskom kodu ili podacima koje unese korisnik
 One se vide tek prilikom izvršavanja programa (kada
  otkrijemo da program ne radi što bi trebao raditi, ali
  još uvijek nije jasno što treba ispraviti u programskom
  kodu)
Greške izuzetaka
 Javljaju se, kao i semantičke greške, tek prilikom
  izvršavanja programa
 Izuzeci (eng. exceptions) će nastati bez obzira što
  programer poduzme da ih spriječi (neizbježne su)
 Uzrok može biti različit, ponekad je u semantičkim
  greškama, jer se logika programa ne uspije ostvariti
  zbog nekih specifičnih podataka koje korisnik unese
 Rukovanje ovim greškama (eng. Exception handling)
  biti će posebno obrađeno
Zašto koristiti debugger?
 I najbolji programer na svijetu radi pogreške prilikom
 pisanja koda
Uvod u klase
 Ugrađene klase npr. Console
 Vlastite klase npr. Tocka, Trokut, Pravokutink
Što je tip u objektnom
programiranju?
 Bit objektnog programiranja je kreiranje novih
  tipova.
 Ako smo kreirali tri dugmeta (OK, Cancel i Help), sva
  tri nasljeđuju svojstva koja ima tip “button”:
   svojstvo visine, širine
   text koji će pisati na dugmetu
   položaj dugmeta na formi,
   i druga svojstva zajednička svim instancama koje
    pripadaju tipu “button”
Nasljeđivanje
 Ta se karakteristika objektnog programiranja zove
  NASLJEĐIVANJE.
 NASLJEĐIVANJE je mogućnost da objekti preuzimaju
  sva svojstva tipa kojem pripadaju.
Klase
 KLASA je neki tip promatranih objekata.
 Klasa je adekvatna skupini ili vrsti kod bioloških
  bića, npr. skupina
  pasa, mačaka, studenata, radnika, artikala, itd. Objekt
  je instanca nek
   1. Pas = klasa (ili skupina objekata)
   Rex = instanca klase Pas (konkretan pas izklase Pas)
   2. Student = klasa
   Pero Perić = instanca klase Student
   3. Button = klasa
   OK button koji napravimo u aplikaciji = instanca klase
    buttone klase, npr.
Kreiranje klase
 Kada kreiramo neku vlastitu klasu, potrebno je
  definirati:
 njezina svojstva (properties) ili varijable kojima će
  dodjeljivati vrijednosti (ako se radi o javnim
  svojstvima, tada se koristi izraz “svojstvo” (eng.
  property), a ako se radi o privatnim varijablama koje će
  se koristiti samo u toj klasi, tada govorimo koristimo
  izraz “varijabla”
 metode koje određuju njezino ponašanje.
Kreiranje klase
 Naredba za kreiranje nove klase počinje ključnom
 riječi class, zatim dolazi naziv klase, zatim
 deklaracija svojstava (properties) koje se definiraju za
 tu klasu, te metode koje pripadaju klasi.
Kreiranje klase
class mojaKlasa
{
  //ovdje definicija svojstava ili varijabli,
  npr.
  int mojaVarijabla;
}
 Gornjim naredbama kreirali smo klasu pod nazivom
  mojaKlasa, i njoj pripadajuću cjelobrojnu
  varijablu pod nazivom mojaVarijabla kojoj će se
  unutar klase mojaKlasa moći dodjeljivati vrijednosti.
Kreiranje objekta iz klase
class Student
{
  // ovdje definiramo svojstva koja pripadaju toj klasi:
  int Ocjena;
}

public void Main()
{
  Student Pero = new Student();
  Pero.Ocjena= 3;
}
Konstruktor
 Naredba kojom se definira instanca neke klase izgleda
  ovako: (npr. Za kreiranje instance Pero klase Student)
 Student Pero = new Student();
 Naredba sadrži na kraju zagrade (), pa izgled kao da
  poziva metodu.
 Zapravo, pri kreiranju nove instance poziva se jedna
  metoda koja se zove konstruktor (eng. constructor).
Konstruktor
 Zadatak konstruktora je kreirati instancu (objekt)
  neke klase i omogućiti da se toj instanci dodijeli
  vrijednost kasnije u programu.
 Nakon što se konstruktorom kreira nova instanca, u
  memoriji se ostavlja prostor za vrijednosnu instancu.
  Ako ne specificiramo koji konstruktor pozivamo, CLR
  poziva standardni (default) konstruktor kojim se
  definira nova instanca klase i ne prosljeđuju mu se
  nikakve vrijednosti. Zato u zagradama kod ovog
  standardnog konstruktora ne pišemo ništa.
Konstruktor - nastavak
 Ukoliko se želi koristiti neki vlastiti određeni konstruktor, tada
  se on mora deklarirati u programu prije samog korištenja.

// konstruktor
public Vrijeme(System.DateTime dt)
{
   godina = dt.Year;
   mjesec = dt.Month;
   dan = dt.Day;
   sat = dt.Hour;
   minuta = dt.Minute;
   sekunda = dt.Second;
}
Metode
 Metoda je neka funkcija koja se nalazi unutar
  klase. Ona je član (eng. member) klase.
 Metode definiraju što klase rade i kako se klase
  ponašaju.
 Metodama koje sami kreiramo možemo dati
  proizvoljne naziv, npr. Ispis(), Racunanje(), itd.
Kreiranje metoda
 Kada se kreira neka metoda, ona također ima svoju
  deklaraciju. U deklaraciji se definira tip podatka koji de
  metoda vradati, zatim naziv metode i u zagradi parametre
  koji de se prosljeđivati metodi.
 Npr. ovako: Int mojaMetoda(int velicina);
Kreiranje metoda
 Neke metode uopće ne vraćaju nikakve vrijednosti.
  Takve metode samo nešto izvode, i tada je tip metode
  void, a u zagradi se ne piše ništa, npr. ovako:
 void mojaMetoda( );
Operator točka (.)
 Operator . koristi se:
 Za pristup metodi ili atributu unutar neke klase
 Primjer:
 Student.Pero.Visina=175;
 koristi instancu Pero klase Student, i njegovom
  svojstvu Visina dodjeljuje vrijednost 175.
Statični članovi
 Pri korištenju metode Main() vidjeli smo da naredba
  sadrži ključnu riječ “static”:
 static void Main()


 Riječ “static” znači da se ta metoda može pozvati
  samostalno bez prethodnog pozivanja klase tj. Možete
  je koristiti bez da u imate objekt te klase
Statični članovi
 Svojstva i metode neke klase mogu biti instance ili statični
    članovi.
   Ako su instance, moraju se pozivati preko operatora “.” tako
    da se najprije navede klasa kojoj pripadaju, npr. ako
    definiramo klasu Student, i u okviru nje instancu Pero, a
    zatim neku metodu Upisi() (kojom će se studenti upisivati
    na fakultet), tada se ta metoda poziva:
   a) ako prethodno nije definirana kao statična:
   Student.Pero.Upisi();
   b) ako je prethodno definirana kao statična:
   Student.Upisi();
Ključna riječ this
 Ključna riječ “this” odnosi se na trenutnu instancu
  neke klase (ili drugog objekta).
 “this” je skriveni pokazivač (pointer) na svaku
  nestatičnu metodu neke klase
Izrada klase točka
 class Tocka
 {
      //ovdje dolazi deklaracija atributa i metoda
 }
Atributi klase točka
 class Tocka
 {
    public int x, y;
 }
Konstruktor klase točka
 class Tocka
 {
    public int x, y;

     public Tocka(int x_os, int y_os)
     {
       x = x_os;
       y = y_os;
     }
 }
Poziv konstruktora
 Tocka a = new Tocka(10, 10);
Metoda Opis()
     public string Opis()
     {
       return "Točka ima kordinate: " + x + " i " + y;
     }
 Ako je x = 10 i y = 10 onda će string koji se vraća
  izgledati:
 “Točka ima kordinate: 10 i 10”
Klasa Math
 Klasa sa matematičkim metodama i atributima


 Slična biblioteci math.h iz c programskog jezika
Metoda udaljenostOdIshodista()
 public double udaljenostOdIshodista()
 {
     double udaljenost;
     udaljenost = Math.Sqrt(Math.Pow(x, 2) +
     Math.Pow(y, 2));
     return udaljenost;
   }
Metoda udaljenostDoTocke(Tocka
tocka)
 public double udaljenostDoTocke(Tocka tocka)
 {
      double udaljenost;
      udaljenost = Math.Sqrt(Math.Pow(x - tocka.x, 2)
     + Math.Pow(y - tocka.y, 2));
      return udaljenost;
   }
System.IO prostor imena
 Ulaz i izlaz (Input/Output tj. I/O) odnosi se na postupke
    čitanja i pisanja podatka u i iz tokova (streams) i datoteka
   npr. datoteka, U/I jedinica, TCP/IP utičnica, međuprocesni
    komunikacijski cjevovod, ...
   Tri osnovna klasa:
   klasi za čitanje i pisanje okteta (bytes)
   klasi za čitanje i pisanje znakova (character)
   klasi za čitanje i pisanje binarnih podataka
Directory, DirectoryInfo, File, FileInfo
 Služe za stvaranje, kopiranje, brisanje, premještanje i
  preimenovanje datoteka i direktorija, otvaranje
  datoteka te za iteraciju kroz direktorije
FileSystemInfo
Dodatni atributi datoteka
 Archive
 Compressed
 Directory
 Encrypted
 Hidden
 Normal
 ReadOnly
 System
klas DirectoryInfo
 klas DirectoryInfo uključuje postupke za stvaranje,
 premještanje (preimenovanje) i iteraciju (enumeraciju)
 kroz direktorije i poddirektorije
klas FileInfo
klas File

Contenu connexe

Tendances

Развој српског књижевног језика
Развој српског књижевног језикаРазвој српског књижевног језика
Развој српског књижевног језикаИвана Цекић
 
Горски вијенац (Селимово писмо и отпоздрав на писмо)
Горски вијенац (Селимово писмо и отпоздрав на писмо)Горски вијенац (Селимово писмо и отпоздрав на писмо)
Горски вијенац (Селимово писмо и отпоздрав на писмо)Ивана Цекић
 
Fotosinteza, disanje i transpiracija
Fotosinteza, disanje i transpiracijaFotosinteza, disanje i transpiracija
Fotosinteza, disanje i transpiracijaTanja Jovanović
 
Дијалекти српског језика
Дијалекти српског језикаДијалекти српског језика
Дијалекти српског језикаИвана Цекић
 
Pretkosovski ciklus epskih narodnih pesama
Pretkosovski ciklus epskih narodnih pesamaPretkosovski ciklus epskih narodnih pesama
Pretkosovski ciklus epskih narodnih pesamaMarija Tir Borlja
 
Klasifikacija živih bića u pet carstava
Klasifikacija živih bića u pet carstavaKlasifikacija živih bića u pet carstava
Klasifikacija živih bića u pet carstavaIvana Damnjanović
 
радни глаголски придев
радни глаголски придеврадни глаголски придев
радни глаголски придевksudjic
 
Svetlost - obnavljanje
Svetlost - obnavljanjeSvetlost - obnavljanje
Svetlost - obnavljanjemarinamj
 
Oblici rada u nastavi (frontalni, individualni, grupni,...)
Oblici rada u nastavi (frontalni, individualni, grupni,...)Oblici rada u nastavi (frontalni, individualni, grupni,...)
Oblici rada u nastavi (frontalni, individualni, grupni,...)Dragan Djukic
 
Centralni nervni sistem-mozak
Centralni nervni sistem-mozakCentralni nervni sistem-mozak
Centralni nervni sistem-mozakEna Horvat
 
Структуре становништва Србије
Структуре становништва СрбијеСтруктуре становништва Србије
Структуре становништва Србијеprijicsolar
 

Tendances (20)

Stanovnistvo i kultura evropskih naroda
Stanovnistvo i kultura evropskih naroda Stanovnistvo i kultura evropskih naroda
Stanovnistvo i kultura evropskih naroda
 
Blumova taksonomija
Blumova taksonomijaBlumova taksonomija
Blumova taksonomija
 
Развој српског књижевног језика
Развој српског књижевног језикаРазвој српског књижевног језика
Развој српског књижевног језика
 
Francuska
Francuska Francuska
Francuska
 
Горски вијенац (Селимово писмо и отпоздрав на писмо)
Горски вијенац (Селимово писмо и отпоздрав на писмо)Горски вијенац (Селимово писмо и отпоздрав на писмо)
Горски вијенац (Селимово писмо и отпоздрав на писмо)
 
Fotosinteza, disanje i transpiracija
Fotosinteza, disanje i transpiracijaFotosinteza, disanje i transpiracija
Fotosinteza, disanje i transpiracija
 
Pljosnati crvi; planarije
Pljosnati crvi; planarijePljosnati crvi; planarije
Pljosnati crvi; planarije
 
Дијалекти српског језика
Дијалекти српског језикаДијалекти српског језика
Дијалекти српског језика
 
Pretkosovski ciklus epskih narodnih pesama
Pretkosovski ciklus epskih narodnih pesamaPretkosovski ciklus epskih narodnih pesama
Pretkosovski ciklus epskih narodnih pesama
 
Klasifikacija živih bića u pet carstava
Klasifikacija živih bića u pet carstavaKlasifikacija živih bića u pet carstava
Klasifikacija živih bića u pet carstava
 
радни глаголски придев
радни глаголски придеврадни глаголски придев
радни глаголски придев
 
3. osobine zivih bica
3. osobine zivih bica3. osobine zivih bica
3. osobine zivih bica
 
Svetlost - obnavljanje
Svetlost - obnavljanjeSvetlost - obnavljanje
Svetlost - obnavljanje
 
Oblici rada u nastavi (frontalni, individualni, grupni,...)
Oblici rada u nastavi (frontalni, individualni, grupni,...)Oblici rada u nastavi (frontalni, individualni, grupni,...)
Oblici rada u nastavi (frontalni, individualni, grupni,...)
 
Stanovništvo Republike Srbije
Stanovništvo  Republike  SrbijeStanovništvo  Republike  Srbije
Stanovništvo Republike Srbije
 
Naselja
NaseljaNaselja
Naselja
 
Centralni nervni sistem-mozak
Centralni nervni sistem-mozakCentralni nervni sistem-mozak
Centralni nervni sistem-mozak
 
Insekti
InsektiInsekti
Insekti
 
Populacija
PopulacijaPopulacija
Populacija
 
Структуре становништва Србије
Структуре становништва СрбијеСтруктуре становништва Србије
Структуре становништва Србије
 

En vedette

Pharmacovigilance evmpd submission
Pharmacovigilance evmpd submissionPharmacovigilance evmpd submission
Pharmacovigilance evmpd submissioneCTDconsultancy
 
11.04.2016 rapport conseil_strategique_des_industries_de_sante
11.04.2016 rapport conseil_strategique_des_industries_de_sante11.04.2016 rapport conseil_strategique_des_industries_de_sante
11.04.2016 rapport conseil_strategique_des_industries_de_santeMarket iT
 
What’s new in Pharmacovigilance
What’s new in PharmacovigilanceWhat’s new in Pharmacovigilance
What’s new in PharmacovigilanceMarket iT
 
Kontracepcija
KontracepcijaKontracepcija
Kontracepcijariki_n
 
Internet
InternetInternet
Internetbbilja
 
Угао опружен угао...
Угао опружен угао...Угао опружен угао...
Угао опружен угао...Marija Terzic
 
Угао - преношење углова
Угао - преношење угловаУгао - преношење углова
Угао - преношење угловаMarija Terzic
 
Portfolio i-plan-usavrsavanja-nastavnika
Portfolio i-plan-usavrsavanja-nastavnikaPortfolio i-plan-usavrsavanja-nastavnika
Portfolio i-plan-usavrsavanja-nastavnikaattention interactive
 
Површина паралелограма
Површина паралелограмаПовршина паралелограма
Површина паралелограмаattention interactive
 
Meet Earth's Legal Team: EarthJustice
Meet Earth's Legal Team: EarthJusticeMeet Earth's Legal Team: EarthJustice
Meet Earth's Legal Team: EarthJusticePeter Getty
 
14. Defining Classes
14. Defining Classes14. Defining Classes
14. Defining ClassesIntro C# Book
 

En vedette (20)

14 kontracepcija
14 kontracepcija 14 kontracepcija
14 kontracepcija
 
Hollywood
HollywoodHollywood
Hollywood
 
Menstruacijski
 Menstruacijski Menstruacijski
Menstruacijski
 
Pharmacovigilance evmpd submission
Pharmacovigilance evmpd submissionPharmacovigilance evmpd submission
Pharmacovigilance evmpd submission
 
11.04.2016 rapport conseil_strategique_des_industries_de_sante
11.04.2016 rapport conseil_strategique_des_industries_de_sante11.04.2016 rapport conseil_strategique_des_industries_de_sante
11.04.2016 rapport conseil_strategique_des_industries_de_sante
 
What’s new in Pharmacovigilance
What’s new in PharmacovigilanceWhat’s new in Pharmacovigilance
What’s new in Pharmacovigilance
 
Kontracepcija
KontracepcijaKontracepcija
Kontracepcija
 
Kontracepcija
KontracepcijaKontracepcija
Kontracepcija
 
Internet
InternetInternet
Internet
 
Угао опружен угао...
Угао опружен угао...Угао опружен угао...
Угао опружен угао...
 
Угао
УгаоУгао
Угао
 
Угао - преношење углова
Угао - преношење угловаУгао - преношење углова
Угао - преношење углова
 
Portfolio i-plan-usavrsavanja-nastavnika
Portfolio i-plan-usavrsavanja-nastavnikaPortfolio i-plan-usavrsavanja-nastavnika
Portfolio i-plan-usavrsavanja-nastavnika
 
Површина паралелограма
Површина паралелограмаПовршина паралелограма
Површина паралелограма
 
Meet Earth's Legal Team: EarthJustice
Meet Earth's Legal Team: EarthJusticeMeet Earth's Legal Team: EarthJustice
Meet Earth's Legal Team: EarthJustice
 
O skupovim
O skupovimO skupovim
O skupovim
 
Centalni i periferijski ugao kruga
Centalni i periferijski ugao krugaCentalni i periferijski ugao kruga
Centalni i periferijski ugao kruga
 
Vektori u ravni_ii_deo
Vektori u ravni_ii_deoVektori u ravni_ii_deo
Vektori u ravni_ii_deo
 
Funkcionalne jednacine inverzna
Funkcionalne jednacine inverznaFunkcionalne jednacine inverzna
Funkcionalne jednacine inverzna
 
14. Defining Classes
14. Defining Classes14. Defining Classes
14. Defining Classes
 

C# predavanja

  • 1.
  • 2. Programske paradigme  Programska paradigma je osnovni stil računalnog programiranja  Paradigme se razlikuju u konceptu i razini apstrakcije reprezentiranja elemenata programa (kao što su funkcije, varijable, konstante, objekti...) i koracima sastavljanja proračuna (kao što su zadaci, evaluacije, tokovi podataka...)
  • 3. Programske paradigme  Programski jezik može podržavati više paradigmi npr. C++ može biti proceduralni ili objektno-orijentirani
  • 4. Usporedba – borilačke vještine  Programerska paradigma se može usporediti sa borilačkim vještinama (stil i oružje sa kojim se borac bori, može se usporediti sa stilom i alatom koji programer koristi)
  • 5. Povijest računalnog programiranja  Inicijalno računala su se strojno programirala  Programiranje binarnim kodom  Programiranje putem asemblerskog jezika  Programiranje putem proceduralnih jezika - C, Basic...  Programiranje putem objektno-orijentiranih jezika – Java, C#... ..........................................................................
  • 6. Programske paradigme  Proceduralna paradigma  Objektno orijentirana paradigma te  Funkcijska paradigma  Konceptualno orijentirana paradigma  Logička paradigma ....................................................................
  • 7. Proceduralna paradigma  Program se sastoji od niza deklaracija, naredbi pridruživanja te poziva predefiniranih kao i vlastitih potprograma  Potprogrami omogućuju smisleno strukturiranje programa  Primjeri: Basic ili C  Problem sa ovakvim pristupom programiranju su sve veća kompleksnost današnjih programa: što je program veći - teže ga je održavati.
  • 8. Objektno-orijentirana paradigma  Kod objektno orijentiranog programiranja (OOP) program se sastoji od skupa objekata koji međusobno komuniciraju  Objekt je programski entitet koji je sposoban primati, obrađivati i slati poruke  Objektno orijentirani model je izuzetno pogodan za opisivanje današnjih sustava koji se najčešde sastoje od jasno odvojenih, samostalnih cjelina koje međusobno komuniciraju i razmjenjuju obrađene podatke  Jedan od takvih primjera koji se najčešde navodi je grafičko korisničko sučelje (GUI).
  • 9. Objektno-orijentirana paradigma  Razvoj OOP-a započet je 60 godina prošlog stoljeda, a popularnost objektno orijentirane paradigme porasla je naglo s razvojem grafičkih korisničkih sučelja, te razvojem programskog jezika C++  Dodatan rast popularnosti dogodio se u 90-tima pri razvoju računalnih igara  Primjeri igara su: Doom III, Starcraft, Diablo, Warcraft III i World of Warcraft
  • 10. Osnovni temelji OOP-a  Osnovni temelji objektno orijentirane paradigme su prije svega objekt i klasa (razred) te metode, nasljeđivanje, enkapsulacija, polimorfizam, apstrakcija i sučelja.  Objekt je naziv za skup svojstava koja možemo objediniti u smislenu cjelinu.  Klasa je skup pravila koja propisuju od čega je pojedini objekt sagrađen te kakva su njegova svojstva.
  • 11. Osnovni temelji OOP-a  Konceptom objektnog programiranja uvodi se mogudnosti definiranja novih korisničkih tipova – klasa. Klase su temelj objektno orijentiranog programiranja.  Ideja uvođenja objekata u programiranje došla je analiziranjem načina na koji funkcionira stvarni svijet. Promatanjem svijeta oko sebe dodi demo do zaključka da se mnoge stvari mogu vrlo jednostavno modellirati pomodu objekata.
  • 12. Primjer Klasa: Automobil Broj objekata: 10 Atributi(svojstva): Boja, težina, broj konja... Metode: Otvori vrata, upali automobil, otvori prozor, uključi brisače...
  • 13. klasa i objekt  Klasa - zamišljena svojstva automobila  Objekt - stvarni automobili na slici
  • 14. Osnovni temelji OOP-a  Objekti međusobno razmjenjuju informacije i traže jedan od drugoga usluge. Pritom okolina objekta ništa ne mora znati o njegovom unutarnjem ustrojstvu.  Svaki objekt ima javno sučelje kojim se definira njegova suradnja s okolinom. Ono određuje koje informacije objekt može dati, te u kojem formatu. Također su definirane i sve usluge koje objekt može pružiti.
  • 15. Osnovni temelji OOP-a  Funkcija koja inicijalizira objekt naziva se konstruktor  Kada objekt više nije potreban posebna funkcija klasa pod nazivom destruktor uredno će uništiti objekt
  • 16. Apstrakcija  Apstrakcija je određivanje bitnih osobina i funkcionalnosti bez uvođenja nepotrebnih detalja ili objašnjenja. Pomoću ovog procesa modeliraju se najvažniji elementi (atributi) i opis pripadnog ponašanja (metode) neke klase.
  • 19. Enkapsulacija (učahurivanje)  Enkapsulacija je povezivanje bitnih informacija i elemenata nekog objekta te njegovog ponašanja (metoda) u povezane, izolirane cjeline na način da unutrašnji ustroj nije vidljiv vanjskom svijetu 1. public: elementi su dio javnog sučelja klase i dostupni su svim drugim klasama 2. private: elementi su dostupni samo klasi u kojoj su deklarirani. 3. protected: elementi su dostupni klasi u kojem su deklarirani i podklasama.
  • 21. Nasljeđivanje  Nasljeđivanje(eng. inheritance) je tehnika kojom se definiranje neke klase vrši korištenjem definicije postojeće klase (koja se naziva bazna klasa)  Tako dobivena klasa naziva se izvedena klasa  Kada se pomoću izvedenih klasa deklarira neki objekt, njegove članske funkcije i varijable postaju funkcije i varijable koje su kreirane u baznoj klasi
  • 22. Primjer  Kada bi imali klasu vozilo, koji bi sve njegovi atributi bili?  Kada bi imali klasu vozilo, koje bi sve njegove funkcije(metode) bile?
  • 23. Primjer using System; public class Pravokutnik { public Pravokutnik() { Console.WriteLine("Pravokutnik konstruktor."); } public void povrsina(float a, float b) { float P = a*b; Console.WriteLine(P); } public void opseg (float a, float b) { float O= 2*a+2*b Console.WriteLine(O) } }
  • 24. Primjer public class Kvadrat : Pravokutnik { public Kvadrat() { Console.WriteLine("Kvadrat konstruktor"); } public static void Main() { Kvadrat kvadrat = new Kvadrat(); kvadrat.povrsina(4,4) kvadrat.opseg (2,2) } }
  • 25. Nasljeđivanje i konstruktor  Konstruktor služi da bi kreirirali objekt nekog klasa  Svaka klasa bi trebala imati svoj konstrutor
  • 26. Polimorfizam  Polimorfizam je, uz enkapsulaciju, apstrakciju i nasljeđivanje trede važno svojstvo koje objektno orijentiran jezik mora podržavati  Bez nasljeđivanja nema polimorfizma, a nasljeđivanje bez polimorfizma gotovo da i nema smisla  poli – mnogo, form - oblici => više oblika
  • 27. Primjer  Neka je bazna klasa Geometrijski_lik, a izvedeni klasi su Krug i Pravokutnik  Svaki Geometrijski_lik ima svoju povrsinu, ali se ona za Krug izračunava na drugačiji način nego za Pravokutnik  Za krug je radijus * radijus * PI, a za pravokutnik je duljina*širina, ali općenito svojstvo svakog geometrijskog lika je njegova površina kao što je prikazano na slici
  • 28. Sučelje  Objekt definira svoju interakciju s vanjskim svijetom kroz funkcije koje podržava  Npr. gumbi na televizoru čine njegovo sučelje koje odvaja elektroniku i način na koji je izvedena od krajnjeg korisnika (nas), koji želimo gledati neki program  Bez obzira na proizvođača televizora i način na koji je elektronika organizirana mi očekujemo da demo svaki televizor modi upaliti, ugasiti, promijeniti kanal, smanjiti ili povedati glasnodu itd
  • 32. Osnove C# programskog jezika  C# je dizajniran da bude:  Jednostavan  Siguran  Objektno-orijentiran  Internet-centriran  Brz
  • 33. C# jednostavnost i sigurnost  C# je jednostavan programski jezik sa samo 80 ključnih riječi i desetak tipova  Siguran je za upis koda jer debuger traži greške direktno pri upisu koda, a ne samo nakon pokretanja
  • 34. Hello World namespace HelloWorld { class HelloWorld { static void Main() { // Korištenje objekta Console System.Console.WriteLine("Hello world"); } } }
  • 35. Metoda void mojaMetoda(int param1, string param2) { //kod ide ovdje }
  • 36. Poziv metode int x = 5; string mojString = “Hello”; mojaMetoda(x, mojsString);
  • 37. Komentari  C komentari /* */  C++ komentari //  XML dokumentacijski komentari ///
  • 38. Deklaracija varijabli  int prva, druga, treca;  ili  int prva=10, druga, treca=0;
  • 39. Console.WriteLine(printf)  Console.WriteLine(“Pozdrav!”);  int godine=56;  Console.WriteLine(“Broj godina je {0}”, godine);  int broj1 = 5, broj2 = 7, broj3=9;  Console.WriteLine(“prvi: {0}, drugi: {1}, treci: {2}, opet prvi: {0}", broj1, broj2, broj3);
  • 40. Console.ReadLine(gets)  string godine_string = Console.ReadLine();  int godine_integer = Convert.ToInt32(godine_string);
  • 41. Konstante  const int brojdana = 7;
  • 43. if uvijet if ( broj > 40 ) { Console.WriteLine(“Broj je veci od 40”); } else { Console.WriteLine(“Broj je manji ili jednako 40”); }
  • 44. for petlja for ( int x = 5; x < 10; x++ ) { Console.WriteLine(“x: {0}”, x); }
  • 45. While petlja while (i < 10) { Console.Write("{0} ", i); i++; }
  • 46. Do-while petlja do { Console.Write("{0} ", i); i++; } while (i < 10);
  • 47. Operatori  C# podržava:  Relacijske operatore (>, <, ==)  Operatore dodjele (=)  Matematičke operatore(*,/,-,+)  Logičke operatore (&&, ||, !)
  • 48. Relacijski operatori  Jednako (==)  Nije jednako (!=)  Veće (>)  Veće ili jednako (>=)  Manje (<)  Manje ili jednako (<=)
  • 49. Matematički operator +  string tekst1 = “hello”;  string tekst2 = “ world”;  string s3 = s1 + s2;
  • 50. Kratko pisanje matematičkih operatora  a += b;  a -= b;  a *= b;  a /= b;  a %= b;
  • 51. Logički operatori  && (Logičko I)  || (Logičko ILI)  ! (Logičko NE)
  • 52.
  • 53. Web stranica  http://www.microsoft.com/visualstudio/en- us/products/2010-editions/visual-csharp-express  www.google.hr
  • 54. Podržani operacijski sustavi  Windows XP (x86) with Service Pack 3 - all editions except Starter Edition  Windows Vista (x86 & x64) with Service Pack 2 - all editions except Starter Edition  Windows 7 (x86 & x64)  Windows Server 2003 (x86 & x64) with Service Pack 2  Windows Server 2003 R2 (x86 & x64)  Windows Server 2008 (x86 & x64) with Service Pack 2  Windows Server 2008 R2 (x64)
  • 55. Minimalna konfiguracija  Computer that has a 1.6GHz or faster processor  1 GB (32 Bit) or 2 GB (64 Bit) RAM (Add 512 MB if running in a virtual machine)  3GB of available hard disk space  5400 RPM hard disk drive  DirectX 9 capable video card running at 1024 x 768 or higher-resolution display  DVD-ROM Drive
  • 56. Podržani proizvodi u Express verziji  Visual Basic Express  Visual Web Developer Express  Visual C++ Express  Visual C# Express  SQL Server Express  Express for Windows Phone
  • 57.
  • 58. Sintaksa  tip[] identifikator;  Primjer: int[] mojNizIntegera = new int[5];
  • 59. Nizovi kao objekt int[] mojePoljeIntegera = new int[50]; mojePoljeIntegera[0] = 10; mojePoljeIntegera[1] = 20; mojePoljeIntegera[2] = 15; mojePoljeIntegera[3] = 90; mojePoljeIntegera[4] = 50; mojePoljeIntegera[5] = 60; Console.WriteLine(mojePoljeIntegera.Max().ToString()); Console.WriteLine(mojePoljeIntegera.Min().ToString()); Console.WriteLine(mojePoljeIntegera.Average().ToString()); foreach(int i in mojePoljeIntegera) { Console.WriteLine(i.ToString()); } Console.ReadLine();
  • 60. Foreach petlja foreach (int i in mojePoljeIntegera) { Console.WriteLine("{0}", i); } foreach(int i in mojePoljeIntegera) { Console.WriteLine(i.ToString()); }
  • 61.
  • 62. .NET framework  Jednostavnost razvoja aplikacija  Brzina razvoja aplikacija  Sigurnije aplikacije  Višejezično programiranje
  • 63. Slojeviti model .NET Frameworka
  • 64. CLR  CLR = Common Language Runtime  Aplikacija koja se “vrti” na Windowsima  Najvažniji dio .NET-a
  • 65. Što radi CLR?  Provjerava sigurnost  Učitava program  Kešira program – svako novo pokretanje je puno brže od inicijalnog!  Oslobađa resurse  Koristi se sakupljac smeca (engl. Garbage collector) – briše objekte koji se više ne koriste  Sprjecava se pojava “curenja memorije” (engl. memory leaks) – česta pojava u C++-u
  • 66. Što radi CLR?  Provodi JIT (just in time compilation) kompilaciju 1. Program (npr. napisan u C#) kompilira u MSIL (Microsoft Intermediate Language) 2. Prilikom prvog izvršavanja programa, kôd u - MSIL se prevodi u strojni kod platforme – to je zapravo JIT kompilacija 3. Svako slijedece izvršavanje aplikacije uzima strojni kôd iz keša (cachea) – ubrzanje
  • 67. Što radi CLR?  Pruža višejezično okruženje  CTS – Common Type System (Dio CLR-a)  Nasljedivanje kroz više jezika (npr. u C# se naslijedi klasa napravljena u VB.NET)
  • 68. BCL (Base Class Library)  Sastoji se od stotina klasa koje developeru stoje na raspolaganju  klasi su grupirani u prostore imena (engl. namespace) – npr:  System.Data – rad s podacima  System.Collections – rad s kolekcijama (skupovima objekata)  System.IO – rad s datotekama i mapama  Zamjena za Windows API
  • 69. Prostori imena (namespace)  “Pretinci” u koje se smještaju klasi  Imaju hijerarhijsku strukturu  Na vrhu je System
  • 70. Programski jezici u .NETu  Odabir jezika u kojem se programira je stvar stila!  Program napisan u bilo kojem jeziku na kraju postaje program u MSIL-u  Bitno je da kompajler za željeni jezik podržava CTS, tj. da napisan po CLS – Common Language Specification  Danas postoji podrška za:  C#  VB  Eiffel  Fortran  Cobol  JScript  J#  I još mnogo drugih …
  • 71. Razvoj aplikacija u .NET-u  Visual Studio IDE  Notepad + komandna linija  Alternativna razvojna okruženja
  • 72. Slojevi više razine – ADO.NET  U njega spadaju klasi iz System.Data prostora imena  Glavno pitanje na koje odgovara: kako dohvatiti podatke i raditi s njima?  Dva glavna pružatelja podataka (engl. data provider):  SQL Server pružatelj podataka  OLEDB pružatelj podataka
  • 73. Slojevi više razine – ASP.NET  klasi za razvoj Web aplikacija  Koristi ADO.NET i BCL kako bi stvorio vlastite klase  Njime se stvaraju tzv. Web Form stranice  Svaka Web Form stranica sastoji se od:  aspx datoteke (u njoj je HTML)  Datoteke s kôdom (npr .cs ili .vb) – tzv. code behind  U VS IDE-u se koristi tzv. drag & drop za stvaranje stranica  Npr. dovuci gumb
  • 74. Slojevi više razine – Windows Forms  klasi za razvoj MS Windows aplikacija (tzv. rich Windows application)  Jako dobra podrška za razvoj korisničkih sučelja  Glavni prostor imena je System.Windows.Forms  U VS IDE-u se koristi tzv. drag & drop za stvaranje formi  Windows Forme su moćnije od Web Formi  Web Forme su ograničene na ono što pruža standardni HTML  Windows Forme pružaju sve ono što i Windowsi
  • 75. Slojevi više razine – Web servisi  Nova i obecavajuća tehnologija  Web servis je komponenta (komad kôda)  Pokrece se preko Interneta (preko HTTP-a)  Web servis se piše u bilo kojem jeziku (npr. C#)  Web servisi se obavezno pokrece pomocu XML – SOAP-a  To znači da web servis napisanu u .NET-u na Windows serveru može bez problema pokrenuti neki klijent napisan u PHP-u s UNIX-a
  • 77. Pokretanje Visual studio-a  Pokrenite Visual Studio  Imate ikonu na radnoj površini ili idete na start- >programs->Microsoft Visual Studio
  • 78. Pokretanje projekta  Kada se upali Visual Studio  Odaberite padajući izbornik File->New->Project  Nakon otvaranja prozora za odabir novog projekta – odaberite C# windows projekt s lijeve strane i odaberite console application sa desne strane te gumb OK
  • 79. Pokretanje projekta  Kada se upali Visual Studio
  • 80. Pokretanje projekta  Odaberite padajući izbornik File->New->Project
  • 81. Odabir projekta  U ovom prozoru možete odabrati vrstu, naziv i lokaciju projekta
  • 82. Pokretanje projekta  Nakon otvaranja prozora za odabir novog projekta – odaberite C# windows projekt s lijeve strane i odaberite console application sa desne strane, na dnu upišite naziv projekta: vjezba1
  • 84. using  using je najsličniji #include naredbi iz C prog.jezika.
  • 85. namespace  “Pretinci” u koje se smještaju klase(class ili klasi)
  • 86. Naziv klase(klasa ili class)  Klasa Program
  • 87. static void Main(string[] args)  static void Main(string[] args)  Kao funkcija Main u C programskom jeziku  void znači da funkcija nema povratnu vrijednost tj. povratna vrijednost je NULL  static ćemo obrađivati kasnije u predavanjima  string[] args – pošto je konzolna aplikacija, preko command prompta može primiti ulazne argumente i staviti ih u polje args koje je tipa string  PRIMJER: naredba format c: /q  Naredba koja služi za formatiranje  Poziva program format sa argumentima c: i /q  argument c: znači da program formatira particiju c:  argument /q znači da se napravi brzo formatiranje
  • 88. static void Main(string[] args)  Mi u pravilu nećemo slati argumente svojim programima, ali to možemo napraviti  Pravi primjer ćete dobiti pri kraju drugog sata!!! foreach (string tekst in args) { Console.WriteLine(tekst); } Console.ReadLine();
  • 89. Hello World!  Prvi program  Umjesto naredbe printf(); mi ćemo koristiti metodu konzole pod nazivom WriteLine  Upišite unutar main-a:  Console  Primjetiti ćete da Visual Studio predlaže što možete upisati i ako je odabrano ono što želite možete dovršiti bez pisanja pritiščući tipku tab(tabulator)  Nakon upisivanja Console upišite točku  Console.
  • 90. Console  Prvo polugodište ćemo raditi aplikacije u konzoli  Kada nakon naziva objekta(u našem slučaju Console) pritisnemo točku, dobiti ćemo popis mogućih metoda i atributa tog objekta  Prođite malo po njima te pogledajte koje sve metode i atribute ima objekt Console
  • 91. WriteLine  Da bi ispisali nešto u konzolu možemo koristiti metodu npr. WriteLine kao i neke druge  Nakon odabira Console.WriteLine otvorite zagradu (  Tu ćemo vidjeti da metoda WriteLine ima 19 overload mogučnosti ( o tome kasnije na predavanjima)  Nakon otvaranja zagrade upišite navodnike i tekst: Hello World! te zatvorite navodnike, zatvorite zagradu i stavite točku-zarez  Console.WriteLine("Hello World");  Nakon toga dodajte liniju Console.ReadLine();  Ta naredba će nam zadržati ekran kao naredba getch() u C programskom jeziku
  • 92. Pokrenite izvršavanje tipkom F5  Ili pritiskom na zeleni gumb start
  • 93. Atributi i metode  Metode će biti označeni ljubičastom kockicom kao npr. SetWindowSize, dok su atributi označeni malim prozorom kao npr. Title
  • 94. Razlika u korištenju  Uglavnom metode se koriste tako da se pozovu  Npr. Console.WriteLine();  One mogu i ne moraju(zavisno o metode) primati argumente npr. Console.WriteLine(“Tekst”);  U prethodnoj liniji argument je string “Tekst”  Dok se atributi postavljaju uglavnom tako da:  Console.Title = "Naslov prozora";  Postavimo vrijednost atributa kao što je npr. Title  Nekim atributima možemo samo pogledati vrijednost  Npr. Console.WriteLine(Console.CapsLock);  Tako bi doznali da li je pritisnuta tipka CapsLock
  • 95. Pazite!!!!  Na tip podataka koje metode primaju kao atribute  Na tip podataka koju metoda vraća  Na tip podataka argumenta  Ako je argument int onda moze npr. biti  Console.WindowWidth = 30;  Ali kao je argument tipa ConsoleColor onda moze npr. biti  Console.BackgroundColor = ConsoleColor.DarkCyan;
  • 96. Zadatci  Ispišite neki drugi tekst  Saznajte i isprobajte zašto nam služe metode konzole:  Console.Clear();  Console.Write();  Console.Beep();  Console.ReadLine();  Console.ResetColor();  Console.SetCursorPosition(int left, int top);  Console.SetWindowSize(int width, int height);
  • 97. Zadatci  Saznajte i isprobajte zašto nam služe atributi konzole:  Console.Title  Console.BackgroundColor  Console.CapsLock  Console.ForegroundColor  Console.NumberLock  Console.WindowHeight  Console.WindowWidth
  • 98.
  • 99. Što je debuggiranje?  Pronalaženje grešaka i nedostataka u programskom kodu  Naziv potječe od stvarnog događaja – kod jednog od prvih računala “Mark I” dogodio se kvar u radu. Nakon dugotrajne potrage za greškom programeri su otkrili da je kvar izazvala jedna buba koja se uvukla u računalo. Otada se svaka greška ili nedostatak u radu računala zove “bug”.
  • 100. Vrste pogrešaka kod programiranja  Sintaksne  Visual Studio će u gotovo svim situacijama pronaći pogrešku  formalne greške u jeziku  Semantičke  Ako je program sintaksno dobar, može doći do pogreške prilikom pokretanja programa  program ne radi ono za što je namijenjen  Greške izuzetka  pojavljuju se prilikom korištenja programa, neizbježne su, a uzroci mogu biti različiti
  • 101. Sintaksne pogreške  osnovna vrsta grešaka, nastaje pogreškom u jeziku, tj. u pogrešno upisanom programskom kodu (npr. Nedostatak neke zagrade, nepravilno upisana ključna riječ naredbe ili dr.)  Ove greške prilikom debug-iranja budu prikazane u prozoru s popisom grešaka (Error list)
  • 102. Semantičke pogreške  Kod njih su naredbe formalno ispravno napisane, pa ih je teže pronaći od sintaksnih grešaka (ne vide se u prozoru Error list prilikom debug-iranja)  To su greške značenja – program ne radi ono što bi trebao raditi, nego nešto drugo  Mogu biti uzrokovane logičkim pogreškama u programskom kodu ili podacima koje unese korisnik  One se vide tek prilikom izvršavanja programa (kada otkrijemo da program ne radi što bi trebao raditi, ali još uvijek nije jasno što treba ispraviti u programskom kodu)
  • 103. Greške izuzetaka  Javljaju se, kao i semantičke greške, tek prilikom izvršavanja programa  Izuzeci (eng. exceptions) će nastati bez obzira što programer poduzme da ih spriječi (neizbježne su)  Uzrok može biti različit, ponekad je u semantičkim greškama, jer se logika programa ne uspije ostvariti zbog nekih specifičnih podataka koje korisnik unese  Rukovanje ovim greškama (eng. Exception handling) biti će posebno obrađeno
  • 104. Zašto koristiti debugger?  I najbolji programer na svijetu radi pogreške prilikom pisanja koda
  • 105.
  • 106. Uvod u klase  Ugrađene klase npr. Console  Vlastite klase npr. Tocka, Trokut, Pravokutink
  • 107. Što je tip u objektnom programiranju?  Bit objektnog programiranja je kreiranje novih tipova.  Ako smo kreirali tri dugmeta (OK, Cancel i Help), sva tri nasljeđuju svojstva koja ima tip “button”:  svojstvo visine, širine  text koji će pisati na dugmetu  položaj dugmeta na formi,  i druga svojstva zajednička svim instancama koje pripadaju tipu “button”
  • 108. Nasljeđivanje  Ta se karakteristika objektnog programiranja zove NASLJEĐIVANJE.  NASLJEĐIVANJE je mogućnost da objekti preuzimaju sva svojstva tipa kojem pripadaju.
  • 109. Klase  KLASA je neki tip promatranih objekata.  Klasa je adekvatna skupini ili vrsti kod bioloških bića, npr. skupina pasa, mačaka, studenata, radnika, artikala, itd. Objekt je instanca nek  1. Pas = klasa (ili skupina objekata)  Rex = instanca klase Pas (konkretan pas izklase Pas)  2. Student = klasa  Pero Perić = instanca klase Student  3. Button = klasa  OK button koji napravimo u aplikaciji = instanca klase buttone klase, npr.
  • 110. Kreiranje klase  Kada kreiramo neku vlastitu klasu, potrebno je definirati:  njezina svojstva (properties) ili varijable kojima će dodjeljivati vrijednosti (ako se radi o javnim svojstvima, tada se koristi izraz “svojstvo” (eng. property), a ako se radi o privatnim varijablama koje će se koristiti samo u toj klasi, tada govorimo koristimo izraz “varijabla”  metode koje određuju njezino ponašanje.
  • 111. Kreiranje klase  Naredba za kreiranje nove klase počinje ključnom riječi class, zatim dolazi naziv klase, zatim deklaracija svojstava (properties) koje se definiraju za tu klasu, te metode koje pripadaju klasi.
  • 112. Kreiranje klase class mojaKlasa { //ovdje definicija svojstava ili varijabli, npr. int mojaVarijabla; }  Gornjim naredbama kreirali smo klasu pod nazivom mojaKlasa, i njoj pripadajuću cjelobrojnu varijablu pod nazivom mojaVarijabla kojoj će se unutar klase mojaKlasa moći dodjeljivati vrijednosti.
  • 113. Kreiranje objekta iz klase class Student { // ovdje definiramo svojstva koja pripadaju toj klasi: int Ocjena; } public void Main() { Student Pero = new Student(); Pero.Ocjena= 3; }
  • 114. Konstruktor  Naredba kojom se definira instanca neke klase izgleda ovako: (npr. Za kreiranje instance Pero klase Student)  Student Pero = new Student();  Naredba sadrži na kraju zagrade (), pa izgled kao da poziva metodu.  Zapravo, pri kreiranju nove instance poziva se jedna metoda koja se zove konstruktor (eng. constructor).
  • 115. Konstruktor  Zadatak konstruktora je kreirati instancu (objekt) neke klase i omogućiti da se toj instanci dodijeli vrijednost kasnije u programu.  Nakon što se konstruktorom kreira nova instanca, u memoriji se ostavlja prostor za vrijednosnu instancu. Ako ne specificiramo koji konstruktor pozivamo, CLR poziva standardni (default) konstruktor kojim se definira nova instanca klase i ne prosljeđuju mu se nikakve vrijednosti. Zato u zagradama kod ovog standardnog konstruktora ne pišemo ništa.
  • 116. Konstruktor - nastavak  Ukoliko se želi koristiti neki vlastiti određeni konstruktor, tada se on mora deklarirati u programu prije samog korištenja. // konstruktor public Vrijeme(System.DateTime dt) { godina = dt.Year; mjesec = dt.Month; dan = dt.Day; sat = dt.Hour; minuta = dt.Minute; sekunda = dt.Second; }
  • 117. Metode  Metoda je neka funkcija koja se nalazi unutar klase. Ona je član (eng. member) klase.  Metode definiraju što klase rade i kako se klase ponašaju.  Metodama koje sami kreiramo možemo dati proizvoljne naziv, npr. Ispis(), Racunanje(), itd.
  • 118. Kreiranje metoda  Kada se kreira neka metoda, ona također ima svoju deklaraciju. U deklaraciji se definira tip podatka koji de metoda vradati, zatim naziv metode i u zagradi parametre koji de se prosljeđivati metodi.  Npr. ovako: Int mojaMetoda(int velicina);
  • 119. Kreiranje metoda  Neke metode uopće ne vraćaju nikakve vrijednosti. Takve metode samo nešto izvode, i tada je tip metode void, a u zagradi se ne piše ništa, npr. ovako:  void mojaMetoda( );
  • 120. Operator točka (.)  Operator . koristi se:  Za pristup metodi ili atributu unutar neke klase  Primjer:  Student.Pero.Visina=175;  koristi instancu Pero klase Student, i njegovom svojstvu Visina dodjeljuje vrijednost 175.
  • 121. Statični članovi  Pri korištenju metode Main() vidjeli smo da naredba sadrži ključnu riječ “static”:  static void Main()  Riječ “static” znači da se ta metoda može pozvati samostalno bez prethodnog pozivanja klase tj. Možete je koristiti bez da u imate objekt te klase
  • 122. Statični članovi  Svojstva i metode neke klase mogu biti instance ili statični članovi.  Ako su instance, moraju se pozivati preko operatora “.” tako da se najprije navede klasa kojoj pripadaju, npr. ako definiramo klasu Student, i u okviru nje instancu Pero, a zatim neku metodu Upisi() (kojom će se studenti upisivati na fakultet), tada se ta metoda poziva:  a) ako prethodno nije definirana kao statična:  Student.Pero.Upisi();  b) ako je prethodno definirana kao statična:  Student.Upisi();
  • 123. Ključna riječ this  Ključna riječ “this” odnosi se na trenutnu instancu neke klase (ili drugog objekta).  “this” je skriveni pokazivač (pointer) na svaku nestatičnu metodu neke klase
  • 124. Izrada klase točka class Tocka { //ovdje dolazi deklaracija atributa i metoda }
  • 125. Atributi klase točka class Tocka { public int x, y; }
  • 126. Konstruktor klase točka class Tocka { public int x, y; public Tocka(int x_os, int y_os) { x = x_os; y = y_os; } }
  • 127. Poziv konstruktora  Tocka a = new Tocka(10, 10);
  • 128. Metoda Opis() public string Opis() { return "Točka ima kordinate: " + x + " i " + y; }  Ako je x = 10 i y = 10 onda će string koji se vraća izgledati:  “Točka ima kordinate: 10 i 10”
  • 129. Klasa Math  Klasa sa matematičkim metodama i atributima  Slična biblioteci math.h iz c programskog jezika
  • 130. Metoda udaljenostOdIshodista() public double udaljenostOdIshodista() { double udaljenost; udaljenost = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2)); return udaljenost; }
  • 131. Metoda udaljenostDoTocke(Tocka tocka) public double udaljenostDoTocke(Tocka tocka) { double udaljenost; udaljenost = Math.Sqrt(Math.Pow(x - tocka.x, 2) + Math.Pow(y - tocka.y, 2)); return udaljenost; }
  • 132.
  • 133. System.IO prostor imena  Ulaz i izlaz (Input/Output tj. I/O) odnosi se na postupke čitanja i pisanja podatka u i iz tokova (streams) i datoteka  npr. datoteka, U/I jedinica, TCP/IP utičnica, međuprocesni komunikacijski cjevovod, ...  Tri osnovna klasa:  klasi za čitanje i pisanje okteta (bytes)  klasi za čitanje i pisanje znakova (character)  klasi za čitanje i pisanje binarnih podataka
  • 134. Directory, DirectoryInfo, File, FileInfo  Služe za stvaranje, kopiranje, brisanje, premještanje i preimenovanje datoteka i direktorija, otvaranje datoteka te za iteraciju kroz direktorije
  • 136. Dodatni atributi datoteka  Archive  Compressed  Directory  Encrypted  Hidden  Normal  ReadOnly  System
  • 137. klas DirectoryInfo  klas DirectoryInfo uključuje postupke za stvaranje, premještanje (preimenovanje) i iteraciju (enumeraciju) kroz direktorije i poddirektorije