razvoj programskih...

37
Razvoj programskih aplikacij dr. Tomaž Rotovnik [email protected] [email protected] [email protected]

Upload: others

Post on 11-Feb-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 2: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

▪ Visual C#

▪ Zunanje .NET komponente

▪ Enterprise rešitve

▪ Java (primerjava)

Poudarki

Page 3: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

• http://vss.scv.si/moodle/

• John Sharp, “Visual C# 2013 Step by Step”, Microsoft Press, 2013

• Srečo Uranič, “Načrtovanje Programskih Aplikacij”, 2011 (http://uranic.tsckr.si/VISUAL%20C%23/Na%C4%8Drtovanje%20programskih%20aplikacij%20NPA.pdf)

• Seminarska naloga (40%)

• Domača naloga (10%)

• Izpit (50%) - pisni in ustni del

Uvod

Viri

Ocena

Page 4: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Seminarska naloga

• Seminarska naloga naj bo praktične narave! Teme?

- turistični portal (uporabniki, destinacije)

- pošta (storitev, sledenje)

- knjižnica (knjige, izposojevalci)

- videoteka (člani, izposoja)

- operater (osebe, naročniški paket)

- spletna trgovina (izdelki, kupci)

- banka (stranke, računi)

- šola (študenti, predmeti)

- vozni red (prevozno sredstvo, časovnica)

- kino (filmi, gledalci)

- imenik (osebe, naslovi)

- blagajna (plačilno sredstvo, zavedba plačila)

- špedicija (zabojniki, časovnica)

- parkirni avtomat (stranke, časovnica)

Vsebina

Page 5: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Seminarska naloga

• prijava v aplikacijo (identifikacija uporabnika)

• povezava s podatkovno bazo (uporaba ORM)

• administriranje baze (urejanje uporabniškega imena in gesla)

• vnos, spreminjanje, sortiranje in iskanje podatkov znotraj aplikacije

• vnos in izvoz podatkov (XML, csv datoteke)

• tiskanje podatkov (račun, potrdilo, izpis, ...)

• uporaba komponent za paralelno izvajanje

• lokalizacija uporabniškega vmesnika

• logiranje

• uporaba konfiguracijske datoteke

• uporabniška dokumentacija (opis, instalacija, uporaba, ...)

• uporaba komentarjev pri kodiranju

• stil kodiranja (camel Case, Pascal Case)

Priporočila

Page 6: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Seminarska naloga

Ocena

• Smernice: 7-10 priporočil ( <= 8)

Oddaja

• Uporabniška dokumentacija (Word, PDF) 3 dni pred zagovorom po e-pošti

• Vsebina: Naslovna stran, Opis oz. vsebina naloge, Navodila uporabe

aplikacije

Zagovor

• Zagovor naloge na izpitu.

• Izvorna koda (rešitev oz. projekt) in dokumentacija na elektronskem

nosilcu ali po e-pošti ob uspešnem zagovoru

• Prezentacija delujoče aplikacije (delovanje se preveri na zagovoru)

Page 7: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Domača naloga

• 4 naloge, ki se oddajo do naslednjega termina po e-pošti

• Vsebina nalog bo uporabna za seminarsko nalogo

Izpit

• Pisni del se deli na teorijo in izvedbo naloge v Visual C#

• Pozitivna ocena – doseženo vsaj polovico točk iz teorije ter vsaj polovico iz

praktičnega dela

Page 8: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Programiranje

• Ustvarjanje kode, ki jo je možno vzdrževati oz. nadgrajevati

Cilj

Smernice

• Preprostost – lažja čitljivost kode

• YAGNI – You Aren’t Going to Need It

• LRM – Last Responsible Moment - usklajevanje naročnika in izvajalca

• DRY – Don’t Repeat Yourself

• Eksplicitnost

• Odvisnost (Coupling)

• Testiranje (Unit testing)

Page 9: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

.NET Okolje

Programska platforma za razvoj aplikacij, s poudarkom na:

• objektno orientiranim programiranjem

• interoperabilnosti

• prenosljivosti

• varnosti

• modularnosti

• jezikovna neodvisnost znotraj .NET (CLI)

Vsebuje pester nabor jezikov:

• C++,

• C#,

• Visual Basic, VBScript,

• J#, JScript

V osnovi sestavljena iz:

• zbirke knjižnic (.NET Framework Classs Library)

• skupnega izvajalnega okolja (CLR – Common Language Runtime)

Page 10: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

CLR

Vsi programi pisani v .NET okolju se izvajajo v CLR:

• izbris mej med programskimi jeziki

• omejitev dostopa do sistemskih datotek in drugih pomembnih podatkov

CLR – virtualni procesni stroj (VM):

• izolirani OS znotraj gostujočega OS z omogočitvijo izvajanja programov

• ločitev programskega dela od strojnega (neodvisnost - prenosljivost)

• stabilnost delovanja

Programom zagotavlja določene lastnosti na področju:

• rokovanja s pomnilnikom (memory management)

• varnosti

• rokovanja z izjemami (exception handling)

Page 11: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Framework Class Library

Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

• vsebuje več kot 6000 razredov iz katerih gradimo aplikacije ali ustvarimo

svoje zbirke razredov in vmesnikov

• hiarhična ureditev (namespace)

• (System.*, Microsoft.*)

• na voljo vsem CLI programskim jezikom

Zbirka omogoča razvoj naslednjih tipov aplikacij:

• aplikacije v terminalskem okolju (Console)

• aplikacije v Windows okolju (Windows Forms, Windows Services)

• aplikacije v Internet okolju (ASP.NET, XML Web Services)

Page 12: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

C# je eden izmed Microsoftovih programskih jezikov za .NET:

• preprost, moderen, splošno namenski, objektno orientiran, visokonivojski,

komponentno usmerjen programski jezik

• standardiziran po Ecma (ECMA-334) in ISO (ISO/IEC 23270:2006)

• strong type checking, bounds checking

• prenosljiv

• namenjen tako za izdelavo aplikacij za gostujoče ali vgrajene sisteme

Verzija Datum izdaje .NET verzija Visual Studio

C# 1.0 2002 .NET 1.0 VS .NET 2002

C# 1.2 2003 .NET 1.1 VS .NET 2003

C# 2.0 2005 .NET 2.0 VS 2005

C# 3.0 2007 .NET 2.0, 3.0, 3.5 VS 2008, 2010

C# 4.0 2010 .NET 4.0 VS 2010

C# 5.0 2012 .NET 4.5 VS 2012, 2013

Programski jezik C#

Page 13: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Visual Studio in C#

Zagon: Start meni->Vsi Programi->

Visual Studio 2013->

Visual Studio 2013

• Solution (rešitev) je največja organizacijska enota, ki lahko vsebuje več projektov.

• Projekt lahko pripada eni ali več rešitvam.

• Projekti v rešitvi so lahko izvedeni v različnih programskih jezikih.

• Projekt vsebuje izvorne datoteke, ki jih prevajalnik (compiler) prevede v

objektne datoteke (.obj), povezovalnik (linker) pa le-te poveže v izvedbeno

datoteko (aplikacijo) s končnico .exe ali dinamično knjižnico opredeljeno s

končnico .dll. Celoten postopek se imenuje gradnja aplikacije (building).

Page 14: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Izbira tipa aplikacije:

-Console Application (terminalska aplikacija)

-Windows Forms Application (okenska aplikacija – z GUV)

Verzija

.NET okolja

Ime projekta

Lokacija projekta

Ime rešitve

Tip aplikacije

Page 15: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Orodjarna (objekti za obrazce) - Toolbox

Urejevalnik kode – Editor

Urejevalnik obrazca – Form Editor

Izhodno okno - Output,

Seznam napak – Error list,

Seznam opravil – Task list

Lastnosti objektov –

Properties

Raziskovalec – Solution Explorer

Page 16: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Imenski prostor

Naše aplikacije

Napoved uporabljenih imenskih prostorov (namespace)

Začetek razreda

oz. programa

Metoda/funkcija Main s poljem

argumentov tipa string

IntelliSense podpora oz. pomoč

Reference

Page 17: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

IntelliSense

Nudi več vrst pomoči:

• List Members (Ctrl + J) prikaz seznama vseh članov (members) atributa

• Parameter info (Ctrl + Shift + Space) informacije o parametrih metode

• Quick Info (Ctrl + I) hitra pomoč

• Complete Word (Ctrl-Space) dokončnje besede

Page 18: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Izgradnja in zagon projekta

Samo prevajanje projekta (meni Build):

• Build Solution (F6)

• ReBuild Solution

• Clean Solution

• Build Project (Shift + F6)

V primeru napake se v oknu Error List izpiše informacija o številu in vrsti

napak (skupaj z informacijo o vrstici in stolpcu napake v urejevalniku kode).

Prevajanje in zagon projekta (meni Debug):

• Start Debuging (F5)

• Start Without Debuging (Ctrl + F5)

Dva načina gradnje projekta:

• Debug mode

• Release mode (izvršna koda ne vsebuje izvorne kode)

Page 19: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Struktura projekta

Izvršna koda

Izvorna koda razreda Program

Dodatni uporabljeni razredi

(imenski prostor)

Globalne lastnosti projekta

(avtor, podjetje, verzija, …)

Dodatne informacije

za razhroščevalnik

Page 20: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Napake

Napake delimo :

• napake pri prevajanju (Compile Time Error)

• napake pri izvajanju (Run Time Error)

• logične napake (Logical Error)

Izpis napake

(z miško čez rdeče označeno besedo)

Page 21: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Komentarji

Označeni deli besedila, ki niso del programske kode. Omogočajo boljšo

preglednost kode. V komentarjih je lahko podrobneje razložena izvedena

logika v opisnem načinu.

Tri načini komentiranja:

• dve poševnici // (enovrstični komentar)

• par znakov /* in */ (večvrstični komentar)

• trije znaki /// (dokumentacijski komentarji)

Komentiranje označenega

besedila

Odkomentiranje označenega

besedila

Page 22: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Okenske aplikacije

Orodjarna

Text

Text

Text, Multiline,

Scrollbars

Form.cs [Design]

Form.cs

Page 23: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Form.Designer.cs

Okenske aplikacije

Sami ne delamo sprememb!!!

Page 24: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Okenske aplikacije – lastnosti

Kategorizacija

Sortiranje

Lastnosti

Dogodki

Seznam elementov na obrazcu

Programsko dodajanje lastnosti

Page 25: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Okenske aplikacije – dogodki

Form.Designer.cs (InitializeComponent)

Form.cs

Page 26: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Okenske aplikacije – preimenovanje

Preimenovanje obrazca

Preimenovanje lastnih metod

Page 27: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Okenske aplikacije – glavne datoteke

Organizacija projektov

Nastavitve

Lastnosti projekta (verzija, avtor, …)

Izvorna koda, ki pripada obrazcu

Obrazec (vizualni izgled s komponentami)

Dodatni viri obrazca (slike, besedila ikone)

Specifične informacije za posamezni projekt

Page 28: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Program.cs

Okenske aplikacije – glavne datoteke

Vizualni projekt

Inicializacija

Zagon obrazca

Page 29: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Poimenovanje spremenljivk

• V uporabi velike in male črke, cifre ter podčrtaj,

• Prvi znak je črka,

• Ne uporabljamo podčrtajev v imenih spremenljivk,

• Imena spremenljivk naj se ne razlikujejo samo v veliki in mali začetnici,

• Začetek spremenljivke z malo črko,

• Če je ime spremenljivke sestavljeno iz več besed se vsaka naslednja prične

z veliko začetnico (camel Case)

Page 30: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Podatkovni tipi po vrednosti (value type)

Page 31: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Podatkovni tipi po referenci (reference type)

• class (razred)

• interface (vmesnik)

• string

• delegate (delegat)

• object (objekt)

Stack (sklad) Heap (kopica)

referenca –

kazalec A

B

C

BA

C

Page 32: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Podatkovni tipi – pretvarjanje

Uporaba razreda Convert

Casting

Page 33: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Podatkovni tip – string (String)

Page 34: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Podatkovni tip – string (String)

Page 35: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Formatiranje števil

Uporaba metode ToString

Page 36: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Formatiranje števil

Uporaba metode String.Format

Page 37: Razvoj programskih aplikacijvssmoodle.scv.si/pluginfile.php/12861/mod_resource/content/1/2017_RPA... · Je objektno orientirana zbirka knjižnic, vmesnikov ter vrednostnih tipov:

Formatiranje števil - custom