際際滷

際際滷Share a Scribd company logo
C# predavanja
Programske paradigme
 Programska paradigma je osnovni stil raunalnog
  programiranja
 Paradigme se razlikuju u konceptu i razini apstrakcije
  reprezentiranja elemenata programa (kao 邸to su
  funkcije, varijable, konstante, objekti...) i koracima
  sastavljanja prorauna (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  borilake vje邸tine
 Programerska paradigma se mo転e usporediti sa
 borilakim vje邸tinama (stil i oru転je sa kojim se borac
 bori, mo転e se usporediti sa stilom i alatom koji
 programer koristi)
Povijest raunalnog programiranja
 Inicijalno raunala 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
 Logika paradigma
....................................................................
Proceduralna paradigma
 Program se sastoji od niza deklaracija, naredbi
  pridru転ivanja te poziva predefiniranih kao i vlastitih
  potprograma
 Potprogrami omoguuju smisleno strukturiranje
  programa
 Primjeri: Basic ili C
 Problem sa ovakvim pristupom programiranju su sve
  vea kompleksnost dana邸njih programa: 邸to je
  program vei - te転e ga je odr転avati.
Objektno-orijentirana paradigma
 Kod objektno orijentiranog programiranja (OOP) program
  se sastoji od skupa objekata koji meusobno komuniciraju
 Objekt je programski entitet koji je sposoban primati,
  obraivati i slati poruke
 Objektno orijentirani model je izuzetno pogodan za
  opisivanje dana邸njih sustava koji se naje邸de sastoje od
  jasno odvojenih, samostalnih cjelina koje meusobno
  komuniciraju i razmjenjuju obraene podatke
 Jedan od takvih primjera koji se naje邸de navodi je
  grafiko korisniko suelje (GUI).
Objektno-orijentirana paradigma
 Razvoj OOP-a zapoet je 60 godina pro邸log stoljeda, a
  popularnost objektno orijentirane paradigme porasla je
  naglo s razvojem grafikih korisnikih suelja, te razvojem
  programskog jezika C++
 Dodatan rast popularnosti dogodio se u 90-tima pri
  razvoju raunalnih 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, nasljeivanje,
  enkapsulacija, polimorfizam, apstrakcija i suelja.
 Objekt je naziv za skup svojstava koja mo転emo objediniti
  u smislenu cjelinu.
 Klasa je skup pravila koja propisuju od ega je pojedini
  objekt sagraen te kakva su njegova svojstva.
Osnovni temelji OOP-a
 Konceptom objektnog programiranja uvodi se mogudnosti
  definiranja novih korisnikih tipova  klasa. Klase su
  temelj objektno orijentiranog programiranja.
 Ideja uvoenja objekata u programiranje do邸la je
  analiziranjem naina na koji funkcionira stvarni svijet.
  Promatanjem svijeta oko sebe dodi demo do zakljuka 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, ukljui
brisae...
klasa i objekt
 Klasa - zami邸ljena svojstva automobila
 Objekt - stvarni automobili na slici
Osnovni temelji OOP-a
 Objekti meusobno 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 suelje kojim se definira
 njegova suradnja s okolinom. Ono odreuje koje
 informacije objekt mo転e dati, te u kojem formatu.
 Takoer 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 odreivanje bitnih osobina i funkcionalnosti
  bez uvoenja nepotrebnih detalja ili obja邸njenja. Pomou
  ovog procesa modeliraju se najva転niji elementi (atributi) i
  opis pripadnog pona邸anja (metode) neke klase.
Primjer
Primjer
Enkapsulacija (uahurivanje)
 Enkapsulacija je povezivanje bitnih informacija i elemenata
  nekog objekta te njegovog pona邸anja (metoda) u povezane,
  izolirane cjeline na nain da unutra邸nji ustroj nije vidljiv
  vanjskom svijetu

1. public: elementi su dio javnog suelja 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
Nasljeivanje
 Nasljeivanje(eng. inheritance) je tehnika kojom se
  definiranje neke klase vr邸i kori邸tenjem definicije
  postojee klase (koja se naziva bazna klasa)
 Tako dobivena klasa naziva se izvedena klasa
 Kada se pomou 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)
  }
}
Nasljeivanje 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
  nasljeivanje trede va転no svojstvo koje objektno
  orijentiran jezik mora podr転avati
 Bez nasljeivanja nema polimorfizma, a nasljeivanje 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 izraunava na drugaiji nain nego za
  Pravokutnik
 Za krug je radijus * radijus * PI, a za pravokutnik je
  duljina*邸irina, ali openito svojstvo svakog
  geometrijskog lika je njegova povr邸ina kao 邸to je
  prikazano na slici
Suelje
 Objekt definira svoju interakciju s vanjskim svijetom kroz
  funkcije koje podr転ava
 Npr. gumbi na televizoru ine njegovo suelje koje odvaja
  elektroniku i nain na koji je izvedena od krajnjeg
  korisnika (nas), koji 転elimo gledati neki program
 Bez obzira na proizvoaa televizora i nain na koji je
  elektronika organizirana mi oekujemo 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
  kljunih rijei 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 (=)
 Matematike operatore(*,/,-,+)
 Logike operatore (&&, ||, !)
Relacijski operatori
 Jednako (==)
 Nije jednako (!=)
 Vee (>)
 Vee ili jednako (>=)
 Manje (<)
 Manje ili jednako (<=)
Matematiki operator +
 string tekst1 = hello;
 string tekst2 =  world;
 string s3 = s1 + s2;
Kratko pisanje matematikih
operatora
 a += b;
 a -= b;
 a *= b;
 a /= b;
 a %= b;
Logiki operatori
 && (Logiko I)
 || (Logiko ILI)
 ! (Logiko NE)
C# predavanja
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
C# predavanja
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());
}
C# predavanja
.NET framework
 Jednostavnost razvoja aplikacija
 Brzina razvoja aplikacija
 Sigurnije aplikacije
 Vi邸ejezino 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
 Uitava program
 Ke邸ira program  svako novo pokretanje je puno br転e
  od inicijalnog!
 Oslobaa 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邸ejezino 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 korisnikih suelja
   Glavni prostor imena je System.Windows.Forms
   U VS IDE-u se koristi tzv. drag & drop za stvaranje
    formi
   Windows Forme su monije od Web Formi
     Web Forme su ograniene na ono 邸to pru転a standardni
      HTML
     Windows Forme pru転aju sve ono 邸to i Windowsi
Slojevi vi邸e razine  Web servisi
 Nova i obecavajua 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 znai 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 padajui 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 padajui 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 najsliniji #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 znai da funkcija nema povratnu vrijednost tj.
  povratna vrijednost je NULL
 static emo obraivati 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: znai da program formatira particiju c:
      argument /q znai da se napravi brzo formatiranje
static void Main(string[] args)
 Mi u pravilu neemo 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邸ui tipku tab(tabulator)
   Nakon upisivanja Console upi邸ite toku
   Console.
Console
 Prvo polugodi邸te emo raditi aplikacije u konzoli
 Kada nakon naziva objekta(u na邸em sluaju Console)
  pritisnemo toku, dobiti emo popis moguih metoda
  i atributa tog objekta
 Proite 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
    mogunosti ( o tome kasnije na predavanjima)
   Nakon otvaranja zagrade upi邸ite navodnike i tekst: Hello
    World! te zatvorite navodnike, zatvorite zagradu i stavite
    toku-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 oznaeni ljubiastom kockicom kao
 npr. SetWindowSize, dok su atributi oznaeni 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 vraa
 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
C# predavanja
to je debuggiranje?
 Pronala転enje gre邸aka i nedostataka u programskom
  kodu
 Naziv potjee od stvarnog dogaaja  kod jednog od
  prvih raunala 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
  raunalo. Otada se svaka gre邸ka ili nedostatak u radu
  raunala zove bug.
Vrste pogre邸aka kod programiranja
 Sintaksne
    Visual Studio e u gotovo svim situacijama pronai
     pogre邸ku
    formalne gre邸ke u jeziku
 Semantike
    Ako je program sintaksno dobar, mo転e doi 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 razliiti
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 kljuna
  rije naredbe ili dr.)
 Ove gre邸ke prilikom debug-iranja budu prikazane u
  prozoru s popisom gre邸aka (Error list)
Semantike pogre邸ke
 Kod njih su naredbe formalno ispravno napisane, pa ih
  je te転e pronai od sintaksnih gre邸aka (ne vide se u
  prozoru Error list prilikom debug-iranja)
 To su gre邸ke znaenja  program ne radi ono 邸to bi
  trebao raditi, nego ne邸to drugo
 Mogu biti uzrokovane logikim 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 semantike gre邸ke, tek prilikom
  izvr邸avanja programa
 Izuzeci (eng. exceptions) e nastati bez obzira 邸to
  programer poduzme da ih sprijei (neizbje転ne su)
 Uzrok mo転e biti razliit, ponekad je u semantikim
  gre邸kama, jer se logika programa ne uspije ostvariti
  zbog nekih specifinih podataka koje korisnik unese
 Rukovanje ovim gre邸kama (eng. Exception handling)
  biti e posebno obraeno
Za邸to koristiti debugger?
 I najbolji programer na svijetu radi pogre邸ke prilikom
 pisanja koda
C# predavanja
Uvod u klase
 Ugraene 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 nasljeuju svojstva koja ima tip button:
   svojstvo visine, 邸irine
   text koji e pisati na dugmetu
   polo転aj dugmeta na formi,
   i druga svojstva zajednika svim instancama koje
    pripadaju tipu button
Nasljeivanje
 Ta se karakteristika objektnog programiranja zove
  NASLJEIVANJE.
 NASLJEIVANJE je mogunost da objekti preuzimaju
  sva svojstva tipa kojem pripadaju.
Klase
 KLASA je neki tip promatranih objekata.
 Klasa je adekvatna skupini ili vrsti kod biolo邸kih bia,
  npr. skupina pasa, maaka, 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 odreuju njezino pona邸anje.
Kreiranje klase
 Naredba za kreiranje nove klase poinje kljunom
 rijei 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 pripadajuu cjelobrojnu
  varijablu pod nazivom mojaVarijabla kojoj e se
  unutar klase mojaKlasa moi 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 omoguiti 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 prosljeuju mu se
  nikakve vrijednosti. Zato u zagradama kod ovog
  standardnog konstruktora ne pi邸emo ni邸ta.
Konstruktor - nastavak
 Ukoliko se 転eli koristiti neki vlastiti odreeni 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 takoer ima svoju
  deklaraciju. U deklaraciji se definira tip podatka koji de
  metoda vradati, zatim naziv metode i u zagradi parametre
  koji de se prosljeivati metodi.
 Npr. ovako: Int mojaMetoda(int velicina);
Kreiranje metoda
 Neke metode uope ne vraaju 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 toka (.)
 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.
Statini lanovi
 Pri kori邸tenju metode Main() vidjeli smo da naredba
  sadr転i kljunu rije static:
 static void Main()


 Rije static znai da se ta metoda mo転e pozvati
  samostalno bez prethodnog pozivanja klase tj. Mo転ete
  je koristiti bez da u imate objekt te klase
Statini lanovi
 Svojstva i metode neke klase mogu biti instance ili statini
    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 statina:
   Student.Pero.Upisi();
   b) ako je prethodno definirana kao statina:
   Student.Upisi();
Kljuna rije this
 Kljuna rije this odnosi se na trenutnu instancu
  neke klase (ili drugog objekta).
 this je skriveni pokaziva (pointer) na svaku
  nestatinu metodu neke klase
Izrada klase toka
 class Tocka
 {
      //ovdje dolazi deklaracija atributa i metoda
 }
Atributi klase toka
 class Tocka
 {
    public int x, y;
 }
Konstruktor klase toka
 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 "Toka ima kordinate: " + x + " i " + y;
     }
 Ako je x = 10 i y = 10 onda e string koji se vraa
  izgledati:
 Toka ima kordinate: 10 i 10
Klasa Math
 Klasa sa matematikim metodama i atributima


 Slina 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;
   }
C# predavanja
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 utinica, meuprocesni
    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 ukljuuje postupke za stvaranje,
 premje邸tanje (preimenovanje) i iteraciju (enumeraciju)
 kroz direktorije i poddirektorije
klas FileInfo
klas File

More Related Content

What's hot (20)

Dinko imunovi duga
Dinko imunovi dugaDinko imunovi duga
Dinko imunovi duga
Patrik Saboli
Glasovne promjene zadaci s rjesenjima
Glasovne promjene zadaci s rjesenjimaGlasovne promjene zadaci s rjesenjima
Glasovne promjene zadaci s rjesenjima
Ivana ali邸
Beta oksidacija masnih kis.
Beta oksidacija masnih kis.Beta oksidacija masnih kis.
Beta oksidacija masnih kis.
JelenaKukic2
Analiza lirske pjesme
Analiza lirske pjesmeAnaliza lirske pjesme
Analiza lirske pjesme
Ivana ali邸
Pridjevi
PridjeviPridjevi
Pridjevi
Ivana ali邸
Bozanstvena komedija -_dante_alighieri
Bozanstvena komedija -_dante_alighieriBozanstvena komedija -_dante_alighieri
Bozanstvena komedija -_dante_alighieri
Lena Theron
Konstruktivni elementi u arhitekturi
Konstruktivni elementi u arhitekturiKonstruktivni elementi u arhitekturi
Konstruktivni elementi u arhitekturi
Claudia Soldatic
Krvnegrupe
Krvnegrupe Krvnegrupe
Krvnegrupe
dr arac
Modeli atoma
Modeli atomaModeli atoma
Modeli atoma
abaka gimnazija
Pridjevi - zadaci
Pridjevi - zadaciPridjevi - zadaci
Pridjevi - zadaci
Ivana ali邸
zemlja u svemiru
zemlja u svemiruzemlja u svemiru
zemlja u svemiru
theorema1
Kr邸anstvo nova svjetska religija
Kr邸anstvo  nova svjetska religijaKr邸anstvo  nova svjetska religija
Kr邸anstvo nova svjetska religija
Vale Shau
Medicinska mikologija
Medicinska mikologijaMedicinska mikologija
Medicinska mikologija
Antonio Koba邸
Predromantizam i romantizam
Predromantizam i romantizamPredromantizam i romantizam
Predromantizam i romantizam
Hrvatski Jezik
Romantizam
RomantizamRomantizam
Romantizam
Claudia Soldatic
Delovi crkve
Delovi crkveDelovi crkve
Delovi crkve
art2you
Vladimir nazor, voda
Vladimir nazor, vodaVladimir nazor, voda
Vladimir nazor, voda
Ivana ali邸
Dinko imunovi duga
Dinko imunovi dugaDinko imunovi duga
Dinko imunovi duga
Patrik Saboli
Glasovne promjene zadaci s rjesenjima
Glasovne promjene zadaci s rjesenjimaGlasovne promjene zadaci s rjesenjima
Glasovne promjene zadaci s rjesenjima
Ivana ali邸
Beta oksidacija masnih kis.
Beta oksidacija masnih kis.Beta oksidacija masnih kis.
Beta oksidacija masnih kis.
JelenaKukic2
Analiza lirske pjesme
Analiza lirske pjesmeAnaliza lirske pjesme
Analiza lirske pjesme
Ivana ali邸
Bozanstvena komedija -_dante_alighieri
Bozanstvena komedija -_dante_alighieriBozanstvena komedija -_dante_alighieri
Bozanstvena komedija -_dante_alighieri
Lena Theron
Konstruktivni elementi u arhitekturi
Konstruktivni elementi u arhitekturiKonstruktivni elementi u arhitekturi
Konstruktivni elementi u arhitekturi
Claudia Soldatic
Krvnegrupe
Krvnegrupe Krvnegrupe
Krvnegrupe
dr arac
Pridjevi - zadaci
Pridjevi - zadaciPridjevi - zadaci
Pridjevi - zadaci
Ivana ali邸
zemlja u svemiru
zemlja u svemiruzemlja u svemiru
zemlja u svemiru
theorema1
Kr邸anstvo nova svjetska religija
Kr邸anstvo  nova svjetska religijaKr邸anstvo  nova svjetska religija
Kr邸anstvo nova svjetska religija
Vale Shau
Medicinska mikologija
Medicinska mikologijaMedicinska mikologija
Medicinska mikologija
Antonio Koba邸
Predromantizam i romantizam
Predromantizam i romantizamPredromantizam i romantizam
Predromantizam i romantizam
Hrvatski Jezik
Delovi crkve
Delovi crkveDelovi crkve
Delovi crkve
art2you
Vladimir nazor, voda
Vladimir nazor, vodaVladimir nazor, voda
Vladimir nazor, voda
Ivana ali邸

Similar to C# predavanja (20)

Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranjaRp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Goran Igaly
Predavanja 04
Predavanja 04Predavanja 04
Predavanja 04
Goran Igaly
C++ radna skripta
C++ radna skriptaC++ radna skripta
C++ radna skripta
jelicastevanovic
Python_Priprema za zavr邸ni ispit_polaznici.pdf
Python_Priprema za zavr邸ni ispit_polaznici.pdfPython_Priprema za zavr邸ni ispit_polaznici.pdf
Python_Priprema za zavr邸ni ispit_polaznici.pdf
sbjezanabistric
Rp1 predavanja 01
Rp1 predavanja 01Rp1 predavanja 01
Rp1 predavanja 01
Goran Igaly
Uvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik PythonUvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik Python
Amar Kalabi
C++ funkcije
C++ funkcijeC++ funkcije
C++ funkcije
Stefan Djukic
Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01
Leonardo Miljko
RP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
RP1 - Funkcije za rad s dinamikim poljem. Funkcije laniceRP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
RP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
Goran Igaly
Predavanja 05 - Osnovne osobine klasa
Predavanja 05 - Osnovne osobine klasaPredavanja 05 - Osnovne osobine klasa
Predavanja 05 - Osnovne osobine klasa
Goran Igaly
Izgradnja OS-a uporabom mikrojezgre
Izgradnja OS-a uporabom mikrojezgreIzgradnja OS-a uporabom mikrojezgre
Izgradnja OS-a uporabom mikrojezgre
Senko Ra邸i
Raunarski praktikum 1 - Razvoj softvera i dizajn
Raunarski praktikum 1 - Razvoj softvera i dizajnRaunarski praktikum 1 - Razvoj softvera i dizajn
Raunarski praktikum 1 - Razvoj softvera i dizajn
Goran Igaly
Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01
Leonardo Miljko
3. for petlja
3. for petlja3. for petlja
3. for petlja
Brankica Joki
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranjaRp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Goran Igaly
Predavanja 04
Predavanja 04Predavanja 04
Predavanja 04
Goran Igaly
Python_Priprema za zavr邸ni ispit_polaznici.pdf
Python_Priprema za zavr邸ni ispit_polaznici.pdfPython_Priprema za zavr邸ni ispit_polaznici.pdf
Python_Priprema za zavr邸ni ispit_polaznici.pdf
sbjezanabistric
Rp1 predavanja 01
Rp1 predavanja 01Rp1 predavanja 01
Rp1 predavanja 01
Goran Igaly
Uvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik PythonUvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik Python
Amar Kalabi
Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01
Leonardo Miljko
RP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
RP1 - Funkcije za rad s dinamikim poljem. Funkcije laniceRP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
RP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
Goran Igaly
Predavanja 05 - Osnovne osobine klasa
Predavanja 05 - Osnovne osobine klasaPredavanja 05 - Osnovne osobine klasa
Predavanja 05 - Osnovne osobine klasa
Goran Igaly
Izgradnja OS-a uporabom mikrojezgre
Izgradnja OS-a uporabom mikrojezgreIzgradnja OS-a uporabom mikrojezgre
Izgradnja OS-a uporabom mikrojezgre
Senko Ra邸i
Raunarski praktikum 1 - Razvoj softvera i dizajn
Raunarski praktikum 1 - Razvoj softvera i dizajnRaunarski praktikum 1 - Razvoj softvera i dizajn
Raunarski praktikum 1 - Razvoj softvera i dizajn
Goran Igaly
Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01Algoritmi i strukture_podataka_2016-01_v01
Algoritmi i strukture_podataka_2016-01_v01
Leonardo Miljko

C# predavanja

  • 2. Programske paradigme Programska paradigma je osnovni stil raunalnog programiranja Paradigme se razlikuju u konceptu i razini apstrakcije reprezentiranja elemenata programa (kao 邸to su funkcije, varijable, konstante, objekti...) i koracima sastavljanja prorauna (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 borilake vje邸tine Programerska paradigma se mo転e usporediti sa borilakim vje邸tinama (stil i oru転je sa kojim se borac bori, mo転e se usporediti sa stilom i alatom koji programer koristi)
  • 5. Povijest raunalnog programiranja Inicijalno raunala 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 Logika paradigma ....................................................................
  • 7. Proceduralna paradigma Program se sastoji od niza deklaracija, naredbi pridru転ivanja te poziva predefiniranih kao i vlastitih potprograma Potprogrami omoguuju smisleno strukturiranje programa Primjeri: Basic ili C Problem sa ovakvim pristupom programiranju su sve vea kompleksnost dana邸njih programa: 邸to je program vei - te転e ga je odr転avati.
  • 8. Objektno-orijentirana paradigma Kod objektno orijentiranog programiranja (OOP) program se sastoji od skupa objekata koji meusobno komuniciraju Objekt je programski entitet koji je sposoban primati, obraivati i slati poruke Objektno orijentirani model je izuzetno pogodan za opisivanje dana邸njih sustava koji se naje邸de sastoje od jasno odvojenih, samostalnih cjelina koje meusobno komuniciraju i razmjenjuju obraene podatke Jedan od takvih primjera koji se naje邸de navodi je grafiko korisniko suelje (GUI).
  • 9. Objektno-orijentirana paradigma Razvoj OOP-a zapoet je 60 godina pro邸log stoljeda, a popularnost objektno orijentirane paradigme porasla je naglo s razvojem grafikih korisnikih suelja, te razvojem programskog jezika C++ Dodatan rast popularnosti dogodio se u 90-tima pri razvoju raunalnih 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, nasljeivanje, enkapsulacija, polimorfizam, apstrakcija i suelja. Objekt je naziv za skup svojstava koja mo転emo objediniti u smislenu cjelinu. Klasa je skup pravila koja propisuju od ega je pojedini objekt sagraen te kakva su njegova svojstva.
  • 11. Osnovni temelji OOP-a Konceptom objektnog programiranja uvodi se mogudnosti definiranja novih korisnikih tipova klasa. Klase su temelj objektno orijentiranog programiranja. Ideja uvoenja objekata u programiranje do邸la je analiziranjem naina na koji funkcionira stvarni svijet. Promatanjem svijeta oko sebe dodi demo do zakljuka 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, ukljui brisae...
  • 13. klasa i objekt Klasa - zami邸ljena svojstva automobila Objekt - stvarni automobili na slici
  • 14. Osnovni temelji OOP-a Objekti meusobno 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 suelje kojim se definira njegova suradnja s okolinom. Ono odreuje koje informacije objekt mo転e dati, te u kojem formatu. Takoer 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 odreivanje bitnih osobina i funkcionalnosti bez uvoenja nepotrebnih detalja ili obja邸njenja. Pomou ovog procesa modeliraju se najva転niji elementi (atributi) i opis pripadnog pona邸anja (metode) neke klase.
  • 19. Enkapsulacija (uahurivanje) Enkapsulacija je povezivanje bitnih informacija i elemenata nekog objekta te njegovog pona邸anja (metoda) u povezane, izolirane cjeline na nain da unutra邸nji ustroj nije vidljiv vanjskom svijetu 1. public: elementi su dio javnog suelja 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. Nasljeivanje Nasljeivanje(eng. inheritance) je tehnika kojom se definiranje neke klase vr邸i kori邸tenjem definicije postojee klase (koja se naziva bazna klasa) Tako dobivena klasa naziva se izvedena klasa Kada se pomou 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. Nasljeivanje 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 nasljeivanje trede va転no svojstvo koje objektno orijentiran jezik mora podr転avati Bez nasljeivanja nema polimorfizma, a nasljeivanje 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 izraunava na drugaiji nain nego za Pravokutnik Za krug je radijus * radijus * PI, a za pravokutnik je duljina*邸irina, ali openito svojstvo svakog geometrijskog lika je njegova povr邸ina kao 邸to je prikazano na slici
  • 28. Suelje Objekt definira svoju interakciju s vanjskim svijetom kroz funkcije koje podr転ava Npr. gumbi na televizoru ine njegovo suelje koje odvaja elektroniku i nain na koji je izvedena od krajnjeg korisnika (nas), koji 転elimo gledati neki program Bez obzira na proizvoaa televizora i nain na koji je elektronika organizirana mi oekujemo 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 kljunih rijei 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 (=) Matematike operatore(*,/,-,+) Logike operatore (&&, ||, !)
  • 48. Relacijski operatori Jednako (==) Nije jednako (!=) Vee (>) Vee ili jednako (>=) Manje (<) Manje ili jednako (<=)
  • 49. Matematiki operator + string tekst1 = hello; string tekst2 = world; string s3 = s1 + s2;
  • 50. Kratko pisanje matematikih operatora a += b; a -= b; a *= b; a /= b; a %= b;
  • 51. Logiki operatori && (Logiko I) || (Logiko ILI) ! (Logiko NE)
  • 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
  • 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()); }
  • 62. .NET framework Jednostavnost razvoja aplikacija Brzina razvoja aplikacija Sigurnije aplikacije Vi邸ejezino 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 Uitava program Ke邸ira program svako novo pokretanje je puno br転e od inicijalnog! Oslobaa 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邸ejezino 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 korisnikih suelja Glavni prostor imena je System.Windows.Forms U VS IDE-u se koristi tzv. drag & drop za stvaranje formi Windows Forme su monije od Web Formi Web Forme su ograniene 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 obecavajua 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 znai 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 padajui 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 padajui 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 najsliniji #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 znai da funkcija nema povratnu vrijednost tj. povratna vrijednost je NULL static emo obraivati 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: znai da program formatira particiju c: argument /q znai da se napravi brzo formatiranje
  • 88. static void Main(string[] args) Mi u pravilu neemo 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邸ui tipku tab(tabulator) Nakon upisivanja Console upi邸ite toku Console.
  • 90. Console Prvo polugodi邸te emo raditi aplikacije u konzoli Kada nakon naziva objekta(u na邸em sluaju Console) pritisnemo toku, dobiti emo popis moguih metoda i atributa tog objekta Proite 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 mogunosti ( o tome kasnije na predavanjima) Nakon otvaranja zagrade upi邸ite navodnike i tekst: Hello World! te zatvorite navodnike, zatvorite zagradu i stavite toku-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 oznaeni ljubiastom kockicom kao npr. SetWindowSize, dok su atributi oznaeni 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 vraa 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
  • 99. to je debuggiranje? Pronala転enje gre邸aka i nedostataka u programskom kodu Naziv potjee od stvarnog dogaaja kod jednog od prvih raunala 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 raunalo. Otada se svaka gre邸ka ili nedostatak u radu raunala zove bug.
  • 100. Vrste pogre邸aka kod programiranja Sintaksne Visual Studio e u gotovo svim situacijama pronai pogre邸ku formalne gre邸ke u jeziku Semantike Ako je program sintaksno dobar, mo転e doi 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 razliiti
  • 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 kljuna rije naredbe ili dr.) Ove gre邸ke prilikom debug-iranja budu prikazane u prozoru s popisom gre邸aka (Error list)
  • 102. Semantike pogre邸ke Kod njih su naredbe formalno ispravno napisane, pa ih je te転e pronai od sintaksnih gre邸aka (ne vide se u prozoru Error list prilikom debug-iranja) To su gre邸ke znaenja program ne radi ono 邸to bi trebao raditi, nego ne邸to drugo Mogu biti uzrokovane logikim 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 semantike gre邸ke, tek prilikom izvr邸avanja programa Izuzeci (eng. exceptions) e nastati bez obzira 邸to programer poduzme da ih sprijei (neizbje転ne su) Uzrok mo転e biti razliit, ponekad je u semantikim gre邸kama, jer se logika programa ne uspije ostvariti zbog nekih specifinih podataka koje korisnik unese Rukovanje ovim gre邸kama (eng. Exception handling) biti e posebno obraeno
  • 104. Za邸to koristiti debugger? I najbolji programer na svijetu radi pogre邸ke prilikom pisanja koda
  • 106. Uvod u klase Ugraene 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 nasljeuju svojstva koja ima tip button: svojstvo visine, 邸irine text koji e pisati na dugmetu polo転aj dugmeta na formi, i druga svojstva zajednika svim instancama koje pripadaju tipu button
  • 108. Nasljeivanje Ta se karakteristika objektnog programiranja zove NASLJEIVANJE. NASLJEIVANJE je mogunost 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 bia, npr. skupina pasa, maaka, 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 odreuju njezino pona邸anje.
  • 111. Kreiranje klase Naredba za kreiranje nove klase poinje kljunom rijei 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 pripadajuu cjelobrojnu varijablu pod nazivom mojaVarijabla kojoj e se unutar klase mojaKlasa moi 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 omoguiti 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 prosljeuju 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 odreeni 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 takoer ima svoju deklaraciju. U deklaraciji se definira tip podatka koji de metoda vradati, zatim naziv metode i u zagradi parametre koji de se prosljeivati metodi. Npr. ovako: Int mojaMetoda(int velicina);
  • 119. Kreiranje metoda Neke metode uope ne vraaju 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 toka (.) 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. Statini lanovi Pri kori邸tenju metode Main() vidjeli smo da naredba sadr転i kljunu rije static: static void Main() Rije static znai 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. Statini lanovi Svojstva i metode neke klase mogu biti instance ili statini 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 statina: Student.Pero.Upisi(); b) ako je prethodno definirana kao statina: Student.Upisi();
  • 123. Kljuna rije this Kljuna rije this odnosi se na trenutnu instancu neke klase (ili drugog objekta). this je skriveni pokaziva (pointer) na svaku nestatinu metodu neke klase
  • 124. Izrada klase toka class Tocka { //ovdje dolazi deklaracija atributa i metoda }
  • 125. Atributi klase toka class Tocka { public int x, y; }
  • 126. Konstruktor klase toka 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 "Toka ima kordinate: " + x + " i " + y; } Ako je x = 10 i y = 10 onda e string koji se vraa izgledati: Toka ima kordinate: 10 i 10
  • 129. Klasa Math Klasa sa matematikim metodama i atributima Slina 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; }
  • 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 utinica, meuprocesni 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 ukljuuje postupke za stvaranje, premje邸tanje (preimenovanje) i iteraciju (enumeraciju) kroz direktorije i poddirektorije