Virkefeltsregler i Java

Relaterede dokumenter
Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag

Forelæsning Uge 6 torsdag repetition

Forelæsning Uge 6 torsdag repetition

Klasser og objekter. (Afsnit i manualen)

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

Forelæsning Uge 2 Torsdag

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

Forelæsning Uge 2 Torsdag

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 6

Forelæsning Uge 3 Mandag

Ugeseddel 4 1. marts - 8. marts

Forelæsning Uge 2 Mandag

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Forelæsning Uge 10 Torsdag

14.1 Internationale programmer

Eksempel: Skat i år 2000

Offset til terminalskærm i Java

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Forelæsning Uge 1 Torsdag

Forelæsning Uge 2 Mandag

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else

Forelæsning Uge 2 Mandag

Anvendelse af metoder - Programmering

Tree klassen fra sidste forelæsning

Forelæsning Uge 1 Torsdag

Forelæsning Uge 3 Torsdag

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

Forelæsning Uge 2 Mandag

Java Klasse nedarvninger

Forelæsning Uge 4 Mandag

Sproget Rascal (v. 2)

Hvordan vælger jeg dokumentprofilen?

Det er muligt at chekce følgende opg. i CodeJudge: og

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

SWC eksamens-spørgsmål. Oversigt

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.

SWC Elementer i klassedefinition

Forelæsning Uge 3 Mandag

Forelæsning Uge 5 Mandag

Forelæsning Uge 3 Mandag

Tredjepart webservices

CVS som KS-værktøj E Branching, Merging m.v.

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Hvad er Objekter - Programmering

Forelæsning Uge 3 Torsdag

Databaseadgang fra Java

DANMARKS TEKNISKE UNIVERSITET

Real-time programming safety in Java and Ada

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

Forelæsning Uge 3 Mandag

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september (Tak til Jakob Bardram for nogle slides) Dagens begreber

Hanne Niels Edith Harald Carsten Jørgen Henrik.

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft

Løsning af møntproblemet

Programmering i C. Lektion december 2008

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller

Introduktion til funktioner, moduler og scopes i Python

Forelæsning Uge 2 Mandag

Forelæsning Uge 10. Opremsningstyper. Forskellige teknikker til test og debugging. Afleveringsopgave: Debugging + Test.

DRONNINGER (QUEENS) Opgave 1

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

Aritmetiske Forelæsning Pr ogrammering operatorer tir 1999 sda præcedens september 1999 Logiske Sammenligningsoperatorer operatorer præcedens

Forelæsning Uge 4 Mandag

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

Rekursion og dynamisk programmering

Web- og serverprogrammering

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Kursus navn: Indledende programmering Kursus nr

Forelæsning Uge 4 Mandag

Fundamentale sprogbegreber

Test af It-komponent

import java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

Forelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 13/ Side 1 af 7

Bemærk, der er tale om ældre versioner af softwaren, men fremgangsmåden er uændret.

dintprog Manual Revision: 731 September 30, Introduktion Notation... 3 I Begreber 4 2 Grundbegreber om programmering 4

Vejledning til listings-pakken

På nedenstående billede skal du finde den figur som optræder nøjagtig 3 gange.

Der er fejl i programmer. Ikke-trivielle programmer er næsten altid fejlbehæftede.

BRP Kursusintroduktion og Java-oversigt

public Set(int size) { this.listelement = new LinkedList<Integer>(); }

1B fil database. //globale variabler DateTime tid; // erklærer en variabel af typen datetime DateTime dag; // erklærer en variabel af typen datetime

Send fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.

Transkript:

Virkefeltsregler i Java int i; int k; Sequence s; int j;

What s in a name? Brian spillede blændende i søndags! Skolen ligger i Viby Ring til Kirsten og sig at... Et navn fortolkes i en kontekst og konteksten er med til at definere navnets betydning. Beskeden Ring til Kirsten og sig at... fortolkes vidt forskelligt på arbejde og hjemme!

Navne i Java Hvad betyder følgende? i = i + 1; Det kommer an på hvilken af følgende erklæringer der gælder: public class Scope { private int i; public void pip() { String i; i = i + 1;

Erklæringer i Java Reglen i Java er at alle navne skal erklæres (eller importeres) før de kan bruges Eneste undtagelse er navne fra java.lang der automatisk importeres til alle filer (String, Math, Thread,...) Navne kan erklæres i filer (gælder dog kun navne på klasser), i klasser og i metoder I denne sammenhæng skal vi indskrænke os til at betragte navne på variabler (herunder parametre) erklæret i klasser og metoder Forskel på klasser og metoder Som vi skal se i det følgende, er der lidt forskel på reglerne for variabler erklæret i klasser og variabler erklæret i (blokke i) metoder

Tre slags variabler Feltvariabler Parametre public class Date { private int day; private int month; private int year; public void adddays(int d) { for ( int i=0; i<d; i++ ) { settonextdate(); Lokale variabler Field variables, parameters, and local variables private int daysinmonth() { int[] daysinmonth = {0,31,28,...; int res; res = daysinmonth[month]; // special case:.. if (month == 2 && isinleapyear()) { res++; return res;

Feltvariabler public class Scope { public Scope() { i = 0; public void addone() { i = i + 1; int i; public void addtwo() { i = i + 2; public int value() { return i; En klasse definerer et navnerum hvor alle navne erklæret i klassen er tilgængelige overalt i klassen (med mindre...).

Parametre public void adddays(int d) { for ( int i=0; i<d; i++ ) { settonextdate(); En metode definerer et navnerum hvor parametre til metoden er tilgængelige overalt i metoden (med mindre...).

Lokale variabler public void pip() { x = x++; // error! int x = 0; x++; I en metode (funktion) definerer en blok {... et navnerum hvor alle navne erklæret i blokken er tilgængelige efter erklæringen og indtil blokkens afslutning.

Indre blokke I en blok kan man erklære indre blokke { {.... Reglen for indre blokke er den samme som reglen for blokke i metoder (forrige slide). public void pip() { int i = 0; { i++; System.out.println(i); int x = 0; x = i; x++; i++; System.out.println(x); System.out.println(i); Virkefelt for x

Et navn virker i indre blokke Hvad er virkefeltet for int j? public void pip() { i = j; // Fejl, j virker ikke her! int j = 0;... { i++; System.out.println(i); Virkefelt for j j++; System.out.println(j);......

Og dog... Hvad sker der når vi oversætter (og evt. afvikler) følgende program? public class Scope { public Scope() { i = 0; public void pip() { i++; { i++; System.out.println(i); int i = 0; i++; System.out.println(i); public static void testmethod() { Scope s = new Scope(); s.pip(); int i;

En forklaring på (med mindre...) Hvad er virkefelterne for de to int i er? public class Scope { public Scope() { i = 0; public void pip() { i++; { i++; System.out.println(i); int i = 0; i++; System.out.println(i); public static void testmethod() { Scope s = new Scope(); s.pip(); int i; Virkefelt for indre i Virkefelt for ydre i

Virkefeltsregler i Java En variabel erklæret i en klasse virker overalt i klassen med undtagelse af virkefeltet for eventuelle ens-benævnte variabler erklæret i (blokke i) klassens metoder. En variabel erklæret i en blok virker overalt i blokken med undtagelse af den del af blokken der går forud for erklæringen virkefeltet for eventuelle ens-benævnte variabler erklæret i indre blokke i blokken.

Kontrolvariabel i for-løkke Konstruktionen for (int j=0; j<4; j++) { System.out.println(j); svarer til { int j; for (j=0; j<4; j++) { System.out.println(j);

Hvilken variabel? Antagelse: Feltvariable er erklæret øverst i klasse Metode: Gå op og ud indtil en erklæring nås public class Scope { private int i; public Scope (int i) { i = i + 1; System.out.println( a + i); public void foo() { System.out.println( b + i); for (int i = 0; i < 3; i ++){ System.out.println( c + i); System.out.println( d + i); new Scope(1).foo(); Scope gælder fra erklæring til blok-slut

Sådan!