UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

Слични документи
Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

PowerPoint Presentation

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language

ZADACI ZA VEŽBU 1. Realizovati konzolnu aplikaciju koja će računati površinu kvadrata, pravougaonika ili trougla. 2. Preko konzole se unosi ocena od 1

Microsoft PowerPoint - JavaP9_2019

Tutoring System for Distance Learning of Java Programming Language

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

Funkcije predavač: Nadežda Jakšić

Slide 1

Funkcije predavač: Nadežda Jakšić

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Tutoring System for Distance Learning of Java Programming Language

R u z v e l t o v a 5 5, B e o g r a d, t e l : ( ) , m a i l : c o n t a c p s i t. r s, w w w. p s i t. r s

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

PowerPoint Presentation

Računarski praktikum I - Vježbe 01 - Uvod

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Sveucilište u Zagrebu

Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { } public static void main(string[] args) { obrada(2.71

PowerPoint Presentation

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Apache Maven Bojan Tomić

Programski jezik JAVA PREDAVANJE

Microsoft Word - 11 Pokazivaci

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

PowerPoint Presentation

Uvod u računarstvo 2+2

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

Primenjeno programiranje - Vežbe

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

** Osnovni meni

SELECT statement basic form

Slide 1

PowerPoint Presentation

Računarski praktikum I - Vježbe 09 - this, static

Generated by Foxit PDF Creator Foxit Software For evaluation only. Operativni sistem U računarstvu, operativni sistem (OS

PowerPoint Presentation

Podela ra~unarskih sredtava

PowerPoint Presentation

PROMENLJIVE, TIPOVI PROMENLJIVIH

Microsoft Word - Java_introduction_NEW_SYLLABUS.doc

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Програмирај!

Писање и превођење модула

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Uvod u računarstvo 2+2

Microsoft PowerPoint - JavaP7_2018

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

ELEKTRONSKO BANKARSTVO BBI Instalacija USB ključa - Windows XP operativni sistem - Windows Vista i Windows 7 operativni sistem

Slide 1

Упутство за коришћење АМРЕС FileSender услуге

Primenjeno programiranje - vezbe GUI i baze podataka

FAMILY SAFETY - PORODIČNA BEZBJEDNOST Program Family safety veoma je koristan za ograničavanje sadržaja i aplikacija koje učenici mogu koristiti na šk

Slide 1

Slide 1

vodič za os

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Često postavljana pitanja u programu OBRT 1. Kako napraviti uplatu u knjizi tražbina i obveza? 2. Kako odabrati mapu/disk za pohranu podataka? 3. Kako

Uvod u računarstvo 2+2

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Inženjering informacionih sistema

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

Uvod u računarstvo 2+2

eOI Middleware Upute za instalaciju

Datum: 20

Biz web hosting

8 LINQ upiti LINQ (Language Integrated Query upit integrisan u jezik) jeste skup mogućnosti koje jezik C# i Framework pružaju za pisanje strukturirani

Microsoft PowerPoint - 6. CMS [Compatibility Mode]

Teorija skupova - blog.sake.ba

UPUTSTVO ZA PODEŠAVANJE MOBILNIH UREĐAJA ZA MMS

8 2 upiti_izvjesca.indd

SRV_3_Ugradj_racun_sistemi_p [Compatibility Mode]

P11.3 Analiza zivotnog veka, Graf smetnji

FAQ mCard

PowerPoint Presentation

Microsoft PowerPoint - 6. Query Builder.pptx

Grananje u programu predavač: Nadežda Jakšić

3.Kontrlne (upravlja~ke) strukture u Javi

Programski jezik C

PDO

PowerPoint Presentation

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: Након

Упутство за пријављивање испита путем интернета Да би студент могао да пријави испит путем интернета мора прво да се пријави. Пријављивање се врши у п

m-intesa ZA KRETANJE BEZ GRANICA... INTESA SANPAOLO BANKA ZA UREĐAJE SVIJET MOGUĆEG.

AKD KID Middleware Upute za Macintosh instalaciju V1.0

UPUTSTVO ZA KRETANJE KROZ EON KORISNIČKI INTERFEJS 1

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Startovanje Androida u Windowsu Jednostavno ako zelite mozete instalirati operativni sistem Android u okviru samog Windowsa (to se takodje moze uradit

070-ALIP2-udzbenik.indb

KREIRANJE TORRENTA Ako zelite da kreirate torrent fajl od nekog fajla ili foldera u vasem racunaru a kasnije podeliti sa drugim korisnicima i uploadov

Projekti šabloni

1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме

studirko.com predstavlja: Večernja škola C# za FPZ ( ) v 4.0 Za studirko.com napisao: Slaven Špigl

Транскрипт:

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke od tih jezičkih razlika su: Java kod se prevodi u.class fajlove koji se opciono mogu pakovati u.jar fajlove. Ovi fajlovi se mogu izvršiti pomoću Java virtuelne mašine. C# kod se prevodi u biblioteke (.dll fajlove) i izvršne fajlove (.exe fajlove). Izvršni fajlovi se mogu izvršiti direktno iz Windows operativnog sistema kao i ostali fajlovi. Biblioteke se ne mogu izvršiti one se samo koriste u izvršnim fajlovima. Slično kao i kod Jave, da bi se izvršavao C# kod na računaru je potrebno instalirati odgovarajući.net okvir. I u Javi i u C# jeziku se klase mogu podeliti po grupama. U jednoj grupi se ne mogu naći dve klase sa istim imenom. U Javi se grupe klasa nazivaju paketi (npr. package java.util), dok C# ima imena prostora (npr. namespace System.Collection) Kada u jednoj grupi želite da koristite klase iz druge grupe one se neće videti. Da bi se u jednoj grupi koristile klase iz druge grupe morate eksplicitno definisati koje grupe se koriste. U Javi se to radi tako što se importuje paket (npr. import java.util), dok se u C# se koristi (using System.Collection) U Javi imena paketa i metoda se obično pišu malim slovom, dok se u C# jeziku pišu velikim početnim slovom. Obično se interfejsima u C# jeziku dodaje slovo I kao prefiks - na primer IComparable, IList i slično. Ako želite da ne dozvolite da se neke klasa dalje nasleđuje u Javi ćete koristiti final dok ćete u C# jeziku koristiti sealed. Sličnost je najlakše predstaviti u konkretnom primeru. U sledećem kodu je prikazana jednostavna Java konzolarna aplikacija: package aplikacija; import java.util.*; import java.lang.*; public final class Primer public static void main(string[] args) System.out.println( (new DateTime(2012, 3, 27)).toString() );

namespace aplikacija using System; using System.Collection; public sealed class Primer public static void Main(String[] args) Console.WriteLine( (new Date(2016, 9, 28)).ToString() ); Kao što možete da vidite osnovna sintaksa je skoro identična. Ako naučite razlike izmedu jezika lako možete da pređete sa jednog jezika na drugi..net OKVIR Microsoft.NET Framework (Slika 1) je softverska platforma koja može biti instalirana na računarima koje pokreće Microsoft Windows operativni sistem (postoji i verzija za Linux - http://www.monodevelop.com/). On uključuje veliki broj gotovih biblioteka kodova za uobičajene probleme u programiranju i virtuelnu mašinu koja upravlja izvršavanjem programa pisanih specijalno za.net Framework. Dostupan je na svim programskim jezicima koji.net Framework podržava (VB.NET, C#...). Više o Microsoft.Net Framefork-u možete pročitati ovde. Slika 1 Arhitektura.NET okvira Microsoft.NET Framework je komponenta koja omogućava izvršavanje programa, dok je za razvoj programa potrebno instalirati i Microsoft SDK (engl. Microsoft Softwere Development Kit). Radi lakšeg razvoja aplikacija potrebno je instalirati i Visual Studio koji predstavlja veoma moćno razvojno okruženje koje olaksava razvoj.net aplikacija. RAZLIKE U JEZIČKIM KONSTRUKCIJAMA Pored elementarnih preimenovanih jezičkih konstrukcija neki elementi se malo više razlikuju. Ovde će biti prikazani neki primeri jezičkih konstrukcija koje se malo više razlikuju i ne mogu se svrstati u jednostavno preimenovanje. 2

ČITANJE SA KONZOLE I Java i C# imaju jednostavne metode za ispis na konzolu System.out.println() odnosno Console.WriteLine(), međutim Java nema ekvivalentnu metodu za čitanje. Ako želite da čitate nešto sa konzole moraćete da uzmete System.inn polje, konvertujete ga u InputStreamReader, a onda njega u BufferedReader, pa onda da koristite readline metodu ovog objekat kao što je prikazano u sledećem primeru: BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); String linija = console.readline(); Pošto je u konzolarnim aplikacijama ovo česta operacije, u C# vam obezbeđuje metodu klase Console koja bez ikakvog konvertovanja vraća string sa konzole: String linija = Console.ReadLine(); Jedan od razloga zašto je Microsoft napravio Jezik koji je sličan Javi ali pod drrugim imenom je upravo mogućnost da ga menja i uvodi ovakve male ali značajne olakšice a da ne zavisi od Java standarda. U nastavku ćete videti još nekoliko zanimljivih razlika koje će vam olakšati rad. NASLEĐIVANJE Oba jezika podržavaju nasleđivanje jedne osnovne klase i implementaciju proizvoljnog broja interfejsa samo se sintaksa malo razlikuje. U javi biste mogli da izvedete klasu kao u sledećem primeru: class Trougao extends GeometrijskaFigura implements Cloneable, Comparable U extends sekciji možete da stavite jednu klasu a u implements proizvoljan broj interfejsa. C# ekvivalent je prikazan u sledećem primeru: class Trougao: GeometrijskaFigura, Cloneable, Comparable Kao što možete videti u C# jeziku je dovoljno nabrojati klase i interfejse. Kompajler će sam proveriti da li je samo jedan element u listi klasa a ostali interfejsi. POZIVANJE KONSTRUKTORA NADKLASE Java class Zivotinja String ime; Zivotinja(String ime) this.ime = ime; class Pas extends Zivotinja String rasa; Pas(String rasa, String ime) 3

super(ime); this.rasa = rasa; C# public class Zivotinja String ime; public Zivotinja(String ime) this.ime = ime; class Pas : Zivotinja String rasa; Pas(String rasa, String ime) : base(ime) this.rasa = rasa; FOREACH PETLJA U Javi, for petlja može da se koristi ili u standardnom obliku ili za prolazak kroz kolekciju promenljivih kao što je prikazano u sledećem listingu: double[] brojevi = 1.2, 3.0, 0.8; int zbir = 0; for (double broj : brojevi) zbir += broj; C# ne omogucava da se for petlja koristi na ovaj način ali ima posebnu foreach petlju koja je ekvivalentna ovoj konstrukciji: double[] brojevi = 1.2, 3.0, 0.8; int zbir = 0; foreach (double broj in brojevi) zbir += broj; PROMENLJIVI BROJ ARGUMENATA METODE U Javi možete deklarisati metodu koja prihvata proizvoljan broj parametara odredenog tipa. Na primer ako želite da deklarišete funkciju koja sabira proizvoljan broj celobrojnih argumenata, u Javi je možete napisati na sledeći način: static int sum(int... numbers) int total = 0; 4

for (int i = 0; i < numbers.length; i++) total += numbers [i]; return total; Promenljiva numbers sadrži niz brojeva koji će biti sabrani. C# ekvivalent je prikazan u sledećem listingu: static int Sum(params int[] numbers) int total = 0; for (int i = 0; i < numbers.length; i++) total += numbers [i]; return total; U oba jezika pozivi metoda su manje više identični: int s1 = Sum(1,2,3); int s2 = Sum(1,2,3,9,8,7); BOKSOVANJE I Java i C# vam omogućavaju automatsku konverziju prostih vrednosnih tipova u referentne i obrnuto kao što je prikazano u sledećem primeru: int i = 123; Object o = i; x=321; int j = (int)o;//j==123 Kada definišete neku celobroju promenljivu (npr. lokalnu promenljivu neke metode koja se nalazi na steku) i dodelite je nekom objektu, i Java i C# će napraviti novi objekat tipa java.lang.integer odnosno System.Int32, staviti ih na hip i postaviti referencu objektu. Kada se objekat na hipu dodeli nekoj drugoj promenljivoj, vrednost će biti kopirana u njega. Primetite da kada se promenljiva prebaci na hip postaje potpuno nepovezana od originala. Kada promenite originalnu vrednost u promenljivoj Ovaj proces se u C# jeziku naziva boxing odnosno unboxing. Jedina razlika je u činjenici da se u Javi objekat na hipu predstavlja kao lava.lang.integer, dok se u C# jeziku predstavlja kao System.Int32. 5

static void NullMe(Int32 n) n = 0; static void NullMe(Object n) n = 0; static void Main(string[] args) int x = 1; Object o = x; x=2; Console.WriteLine("o("+ o.gettype().fullname + ") = " + o);//1 Console.WriteLine("x = " + x);//2 System.Int32 n = (System.Int32)o; System.Int32 m = n; n = 5; Console.WriteLine("o = " + o);//1 Console.WriteLine("n = " + n);//5 Console.WriteLine("m = " + m);//1 NullMe(n); Console.WriteLine("n = " + n);//5 NullMe(o); Console.WriteLine("o = " + o);//1 Primetite da se boksovani objekti prenose po vrednosti kada se predaju funkcijama. Funkcije NullMe postavljaju predate vrednosti na nulu, ali se time menja samo vrednost predata kao argument, dok originalne vrednosti u pozivaocu ostaju nepromenjene. 6