INF1000: Grunnkurs i objektorientert programmering Uke 0, høst 2016.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

14 okt. 2003, Arne Maus Inst. for informatikk, UiO
C++ for Java-programmerere
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Velkommen til INF 1000 – høsten 2003
Programmering i ActionScript - hva er det, og hvordan undervise?
Uke 8 - Mer om: Objekter, klasser og pekere
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Objektorientert programmering Objektorientert systemutvikling
Objektorientert programmering i PHP del 2
Blooms taksonomi for kunnskap
IS-102 Klassedefinisjoner
Institutt for Informatikk ønsker alle nye studenter velkommen!
Eiendomsregister - eksempel
Åsmund Eldhuset asmunde stud.ntnu.no folk.ntnu.no/asmunde/algdat/
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
Feilhåndtering. Feil er uunngåelige! Erfaring viser at feil i dataprogrammer som består av mer enn noen få linjer ikke er til å unngå. For å få et godt.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
INF150 Programmering mandag 11.9
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
Læring og tenkning Systemutvikling er læring Gjensidig respekt og samarbeid Følge en konkret oppskrift Velge blant flere oppskrifter Nå målet uten oppskrift,
Strukturerende elementer i UML
I dag snakker vi om: Brukergrensesnitt med kvalitet Bruksegenskaper Normans 7 stadier Testing med papirprototyp.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i ActionScript - hva er det, og hvordan undervise?
Publisering på verdensveven Kursdag 1 VÅFF, våren 2002.
VI LAGER EN PLATEBUTIKK
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 18.9 Lesing av data fra fil og skriving av data til fil. Side 411 – 4.. Kap 4.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
PUG-NORWAY OKTOBER 2008 THOMAS SKJØRTEN, HILDE ANDREASSEN UML og OpenEdge OOABL.
Jæger: Robuste og sikre systemer INF150 Programmering Kapittel 2: Problemløsning Kapittel 3.1 og 3.2.
BUCS Utfordringer og valg av fokus Tor Stålhane. Rammebetingelser Første spørreundersøkelse viser at det vi gjør må kunne: Brukes sammen med UML Passe.
Objektorientert utforming In 140 Sommerville kap. 12.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
Gamle systemer In 140 Forelesning Nr 19 Sommerville kap 26.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
INF160 Videregående Programmering Hausten Om kurset Lærebok: Lewis & Loftus: Java software solutions, 4.utgåve utgåve inneheld nye, viktige.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Jæger: Robuste og sikre systemer Høgskolen i Molde Velkommen til INF150 Programmering Foreleser Bjørn Jæger.
DRI1001 h04 - Introduksjon 16 aug Arild Jansen 1 Introduksjon til DRI – med vekt på IKT 1. forelesning 16. august Om kursopplegget og pensum Hva.
Objektorientert design
Velkommen til INF 1000 – våren 2006 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen.
Intro til (x)html Del 1. HUMIT1731 uke35b Kåre A. Andersen 2 En mal … Dette er en mal for DTD XHTML 1.0 Transitional Her kommer.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Objektorientert utforming In 140 Forelesning Nr 11 Sommerville kap 12 – del 1.
INF3400 Våren INF3400 våren Forelesninger: 1Tid og sted: Tirsdag – 14.00, Perl Onsdag – 14.00, Perl 2Foreleser: Yngvar Berg,
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Objektorientert design In 140 Sommerville kap 12 – del 1.
Professor Guttorm Sindre Institutt for datateknikk og informasjonsvitenskap Programmering i Python.
Institutt for Informatikk ønsker alle nye studenter velkommen! Bachelorprogrammet Informatikk: språk og kommunikasjon.
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Kom i gang med Python Pål Hellesnes SYSTEMUTVIKLER
TDT4105 Informasjonsteknologi, grunnkurs
Variabler, datatyper og uttrykk
LES SMARTERE Oversikt Lesemål Les aktivt Oppsummer Repeter
Oppsummering – DRI1001 Departementer Direktorater / tilsyn Kommuner
IS-102 Interaksjon med objekter
Institutt for Informatikk ønsker alle nye studenter velkommen!
Objektorientert programmering i Java
Oppsummering – FINF1001 Departementer Direktorater / tilsyn Kommuner
Begynnerkurs i Python Realfagskonferansen 2019 Henrik H. Løvold
Sensorveiledninger på MN
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

INF1000: Grunnkurs i objektorientert programmering Uke 0, høst 2016

Meg Eric Jul – Nyansatt per 1/ – Dansker – excuse my Norwegian – 6 år som forsker Bell Labs Ireland – 25 år før da Københavns Universitet – Mere enn 30 års erfaring med Objektorienteret programmering og distribuerte systemer – meddesigner av programmmeringsspråket Emerald – mange publikationer Emeraldpublikationer – Underviser INF5510 Distribuerte ObjekterINF5510 Distribuerte Objekter

Andre faglærer Ragnhild Kobro Runde – den anden hovedfaglærer, som foreleser de neste 5 uker Enkeltforelesninger av andre IFI lærer

Informatikk Vi vil hjelpe deg å lære å programmere datamaskinen slik at den gjør det du vil! Det er ikke rocket science - ikke mye teori, mer praktisk arbeid Din egen innsats er viktig - det er en lærings- by-doing Og det er gøy!

Litt administrativt VIGTIGT : Studieadministrasjonen registrerer oppmøte i pausen – utenfor auditoriet. Mikronfonlyd og skjerm tas opp og legges ut – hvis systemet fungerer! Kridttavle: foto legges ut Se semestersiden m/ lenker for informasjon!

Informatikk-studiet og INF1000 Ingen krav til forkunnskaper, men høye krav til jevnt arbeid! Tidligere erfaring? – Obs hull og alternative mentale modeller – Følg undervisning og løs obliger, ikke «mist toget» – MYE BAKGRUNN? => Henvend Dag Langmyhr på INF2100-forelesning tirsdag 23/8 kl in Store Auditorium Mål for emnet – Solid grunnlag for videre studier – Vekt på generelle begreper og grunnleggende mekanismer – Trening i programmering ved hjelp av disse i proJava – Ikke et hurtigkurs i praktisk programmering!

Etter denne forelesningen skal du Ha noe kunnskap om begrepene informatikk, datasystem og programmering Ha noe kunnskap om objektorientert programmering (OOP) og programmeringsspråket Java. Kunne skrive enkle Java-programmer med – deklarasjon og tilordning til heltallsvariable – simpel aritmetikk – kommentarer – utskrift-setninger til skjerm Kjenne til studieopplegg og læremidler for emnet

Informatikk Informatikk er læren om hvordan datasystemer konstrueres og brukes* et datasystem består av en eller flere datamaskiner som kjører programvare og kan være knyttet til et eller flere nettverk for overføring av data. Informasjonsteknologi: Informatikk handler om teknologi, men også mye mer! * Dekan ved MatNat; Morten Dæhlen

Er informatikk viktig? Olav Lysne, Simula Research/ UiO

.. krevende? Fra Stortingsmelding 10( ): God kvalitet – trygge tjenester Kvalitet og pasientsikkerhet i helse- og omsorgstjenesten: «.. Eksempler på områder der Norge skårer dårlig er informasjonsflyt, kommunikasjon og koordinering mellom ulike deler av helsetjenesten…»

.. fullt av muligheter? tilfeldig utdrag fra Ifi’s forside Forskning

Sentrale konsepter: Lagdeling og grensesnitt Lag på lag på lag mellom de minste elektroniske komponentene og brukeren. Grensesnitt definerer hvordan programmer kan bruke andre programmer og tilby mer avanserte funksjoner. Brukergrensesnitt definerer hvordan mennesker kan bruke et program. Mer fleksibelt & primitivt Mer avansert & sammensatt Programvare Maskinvare

«Våre» lag Windows eller Linux operativsystem Java kompilator Atom …. Java kjøresystem Kommando- vindu Dine Java-programmer 0 eller 1?

Programmer vi bruker for å programmere editor for å lage kildefil kjøresystem for å utføre programmet kompilator for å oversette til byte-kode $ emacs& $ javac MittProg.java $ java MittProg MittProg.java MittProg.class

Hva er programmering? Å lære en datamaskin å gjøre «noe» på en bestemt måte. – løse et problem – overta en repetitiv/ arbeidskrevende oppgave – utføre noe som ikke lar seg gjøre manuelt Programmering omfatter alltid de samme elementene: 1.Hva skal gjøres? 2.Hvordan skal maskinen gå frem? 3.Hvilke data trenger den å holde rede på? 4.Hvordan beskrive dette i et språk maskinen forstår? 5.Hvordan være sikker på at maskinen (alltid) gjør det jeg har tenkt (se 1)? Dette er *ikke* en sekvensiell prosess – vi lærer underveis og må gå tilbake og i flere runder. Spesifikasjon Design Java Testing

Hva handler det om? formulere problemer/ arbeidsoppgaver tenke kreativt omkring løsninger og formulere løsninger klart og nøyaktig i en form som kan utføres av en datamaskin Programmering er problemløsning – og innebærer å leve mye av tiden med “problemer”. Eller:.. med “å skape noe nytt!”

Objektorientert programmering – OOP hva og hvorfor ? Objektorientering er et tankesett eller paradigme som egner seg til å modellere (lage representasjoner av) komplekse problemstillinger Spesielt nyttig når deler av et program skal kunne utvikles og vedlikeholdes uavhengig av hverandre, men likevel fungere godt sammen OOP støtter programmereren i å modellere virkeligheten ut fra de behovene programmet skal dekke

Objektorientert programmering - hvordan? Modellerer virkeligheten: Velger ut sentrale begreper/ «ting» og operasjoner knyttet til disse Representeres under kjøring av objekter, som lagrer informasjon og kan utføre handlinger Hvilke handlinger et objekt kan utføre og hvordan, beskrives i klassen objektet tilhører. Java-programmer består av en eller flere klasser. I INF1000 starter vi med hvordan data representeres og bearbeides i Java, i klasser som vi ikke lager objekter av Senere (fra uke 5) skal vi bruke dette i objektorienterte programmer («Late Objects») et lite frempek

INF1000 programmering Java Objektorientering Problemløsning Digital representasjon informatikk-start IT og samfunn Grunnkurs i objektorientert Praktisk/ teknisk

Programmeringsspråket Java Mye brukt Presist/ sikkert – lar deg ikke gjøre «farlige» feil som utvikler Samme programkode kan kjøre på flere maskiner Støtter sentrale konsepter for programmerere (OO) – Kraftfullt, men kan kjennes omstendelig – Undervisning: Nyttig, men krevende i starten NB: Java er ikke JavaScript på tross av navnelikhet!

Java – hva er det? Programvare og spesifikasjoner for utvikling og kjøring av programmer i programmeringsspråket Java Finnes for ulike typer maskinvare og operativsystemer

Java – hva trenger vi? Kjøresystemet Java Runtime Environment (JRE) støtter kjøring av ferdige programmer Java Development Kit (JDK) for programutvikling inneholder kompilator i tillegg til JRE De (vi!) som utvikler Java programmer trenger JDK På Ifi bruker vi Java SE 7 (versjon 7 for typiske desktop og server-maskiner) Laptop-hjelpen (se nettsider) kan hjelpe med installasjon

Java – hva trenger vi? En datamaskine... med et styresystem: Window, Linux, med en editor, fx emacs Kjøresystemet Java Runtime Environment (JRE) støtter kjøring av ferdige programmer

Nå: første Javaprogram Nu går vi i gang

Et (tomt) første program i Java class Uke00 { public static void main (String [] args) { }

Et første program – med kommentarer class Uke00 { public static void main (String [] args) { // Dette programmet gjoer ingenting! /* Kommentarer kan vi ogsaa skrive på denne maaten, over flere linjer */ }

Skrive ut en linje class Uke01 { public static void main (String [] args) { // Skriver ut en tekst til brukerens skjerm: System.out.println ("Velkommen til INF1000!"); }

Skrive ut: Med og uten linjeskift class Uke02 { public static void main (String [] args) { // Skriver ut Velkommen til INF1000!: System.out.print ("Velkommen "); System.out.print ("til "); System.out.println ("INF1000!"); }

Tekst-konkatenering class Uke03 { public static void main (String [] args) { // Konkatenerer (skjoeter) to tekster // og skriver ut til skjerm: System.out.println ("Velkommen til" + "INF1000!"); }

Variabler – for å lagre verdier class Uke04 { public static void main (String [] args) { // Deklarere en variabel for lagring av et heltall int alder; // Lagrer et tall i variabelen alder = 19; // Skriver ut tallet med en forklaring System.out.println ("alder har verdien " + alder); }

Endring av variabler class Uke05 { public static void main (String [] args) { int alder; alder = 19; // Endrer verdien i alder alder = 25; System.out.println ("alder har verdien " + alder); }

Feil – uunngåelig & lærerikt Fordi datamaskiner er maskiner er de lite tolerante og lite forståelsesfulle (om ikke de er programmert til å virke slik) Når vi programmerer vil vi heller ikke at maskinen skal begynne å «gjette» hva vi mener (mer akseptabelt når vi leter etter noe i en søkemotor!) Dvs strenge krav til nøyaktighet for at alt funker Kompileringsfeil (typisk skriveleifer) Kjøretidsfeil (noe går feil underveis) – Logiske feil (programmet gjør noe annet enn ventet) Tips foreløpig: UNNGÅ NORSKE TEGN HELT

Kodestil - kodekonvensjoner Tilleggsregler av hensyn til programmerer og leser, som ikke kreves av Java Økt lesbarhet og oversikt Ryddigere kode, også når flere samarbeider  Redusert fare for feil, høyere kvalitet Se Coding guidelines i Big Java, Appendix L

Kodekonvensjoner class Uke04b { public static void main (String [] args) { /* Deklarere en variabel for lagring av et heltall */int alder;/* Lagrer et tall i variabeler */ alder = 19;/* Skriver ut tallet med en forklaring */ System.out.println ("alder har verdien " + alder);}}

INF1000 semesterplan Semesterside /Timeplan Se forelesningsplanpå web.forelesningsplan Oblig HVER uke – til avlevering søndag aften Forelesning mandag lunsj. Gruppetimer/lab tirsdag – fredag

Hvordan jobbe med emnet kikk på lærebok før forelesning forelesning flervalgstest lærebok for økt forståelse, praktiske tips og detaljer før og på lab: Løs ukeoppgaver (Trix) og oblig delta aktivt i seminartimene brug Piazza diskusjonsforum Keep-it-simple (KISS principle)

Learning-by-doing Stor fokus på learning-by-doing Derfor: Skriv programmer!! Og kjør dem!

Lærebok Cay S. Horstmann; Big Java Late Objetcs Elektroniske versjoner finnes, ikke sjekket ut NB: Kun trykte/ skrevne hjelpemidler på eksamen! Big Java dekker også INF1010-pensum! Java for Everyone: samme stoff, men kun INF1000

? ? ? ? Hold følge Vær bevisst DIN læring, bruk tid der du trenger det Programmer, jobb selvstendig Kollokver, diskuter Bruk semestersidene for struktur Snakk med gruppelærer om evt problemer, i tide! Husk at dette er moro - når du jobber på (litt over) ditt nivå! Tips

Mye info? Dette bør du ha fått med deg i uke 0 Skrive inn og kjøre ett Java-program Les eller videresend mail til studentkonto Følg med på semestersiden forsemestersiden – Praktisk informasjon og beskjeder – Krav til obliger, innlevering – Undervisningsplan Pensum og ressurser Flervalgstester for teori Programmeringsoppgaver for praksis, inkl obliger Flervalgstest for uke 0 – en hjelp til selvhjelp fra 2015, men den kan også brukes i år Flervalgstest for uke 0

Og nu mere Java Variabler Konstanter Aritmetikk Strings IF-statement Flow-charts Litt om testing

Neste uke Programmering som problemløsning – Hvordan køres et program? Og innlesing fra bruker Lykke til med semesteret og programmeringen!