Paket i Java. Joachim von Hacht

Relevanta dokument
Föreläsning 2 Verktyg m.m.

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Isolda Purchase - EDI

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Att skriva till och läsa från terminalfönstret

Preschool Kindergarten

Styrteknik : Funktioner och funktionsblock

Beijer Electronics AB 2000, MA00336A,

Objekt, Klasser, Paket m. m.

Styrteknik: Binära tal, talsystem och koder D3:1

Föreläsning 10. Paket Synlighet Arkiv. DA129A Programmering 1

2.1 Installation of driver using Internet Installation of driver from disk... 3

Recitation 4. 2-D arrays. Exceptions

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Swedish adaptation of ISO TC 211 Quality principles. Erik Stenborg

Installation av F13 Bråvalla

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

LULEÅ TEKNISKA UNIVERSITET

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Webbregistrering pa kurs och termin

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Uttagning för D21E och H21E

12.6 Heat equation, Wave equation

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Alias 1.0 Rollbaserad inloggning

Support Manual HoistLocatel Electronic Locks

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Swedish National Data Service

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Isometries of the plane

Laboration 10 - NetBeans

F4. programmeringsteknik och Matlab

Webbreg öppen: 26/ /

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

2I1049 Föreläsning 9. Iterativ programutveckling. Iterativ programutveckling. Modularisering, återanvändning och JavaBeans

endast har ett korrekt alternativ. Om

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

SVENSK STANDARD SS-EN ISO 19108:2005/AC:2015

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

TDDC77 Objektorienterad Programmering

Verktyg och Utvecklingsmiljö. Jochim von Hacht

Testramverk och Model based testing med java i praktiken

A metadata registry for Japanese construction field

How to format the different elements of a page in the CMS :

Quick Start Guide Snabbguide


[HUR DU ANVÄNDER PAPP] Papp är det program som vi nyttjar för att lotta turneringar och se resultat.

Authentication Context QC Statement. Stefan Santesson, 3xA Security AB

Installation Instructions

Adding active and blended learning to an introductory mechanics course

Designmönster/Design patterns

VHDL Basics. Component model Code model Entity Architecture Identifiers and objects Operations for relations. Bengt Oelmann -- copyright

Avveckla patentsystemet - Går det?

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Datasäkerhet och integritet

Det finns en handledning till kortet på hemsidan. AVR STK500.

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

RUP är en omfattande process, ett processramverk. RUP bör införas stegvis. RUP måste anpassas. till organisationen till projektet

Klassdeklaration. Metoddeklaration. Parameteröverföring

Föreläsning 3. Stack

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Stackar, köer, iteratorer och paket

RADIATION TEST REPORT. GAMMA: 30.45k, 59.05k, 118.8k/TM1019 Condition D

Tentamen Programmering fortsättningskurs DIT950

Modeller, Objekt och Klasser

Discovery FSQ, IAA Utgåva/Edition 11. SE Habo. Klass 2 IAA FSQ-I 26W. 4 mm c c mm N L

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Kursplan. MT1051 3D CAD Grundläggande. 7,5 högskolepoäng, Grundnivå 1. 3D-CAD Basic Course

Enterprise App Store. Sammi Khayer. Igor Stevstedt. Konsultchef mobila lösningar. Teknisk Lead mobila lösningar

Kursplan. IK1004 Java - Grafiska användargränssnitt med Swing. 7,5 högskolepoäng, Grundnivå 1. Java - GUI Programming with Swing - Undergraduate Level

Mutability och State. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Användarhandbok. MHL to HDMI Adapter IM750

Swedish framework for qualification

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Att använda Java SE JDK 6

SVENSK STANDARD SS

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

EXTERNAL ASSESSMENT SAMPLE TASKS SWEDISH BREAKTHROUGH LSPSWEB/0Y09

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5

Lektion 3. Anteckningar

Översättning av galleriet. Hjälp till den som vill...

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

JAVA Mer om klasser och objektorientering

Rastercell. Digital Rastrering. AM & FM Raster. Rastercell. AM & FM Raster. Sasan Gooran (VT 2007) Rastrering. Rastercell. Konventionellt, AM

Surfaces for sports areas Determination of vertical deformation. Golvmaterial Sportbeläggningar Bestämning av vertikal deformation

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Resultat av den utökade första planeringsövningen inför RRC september 2005


Calculate check digits according to the modulus-11 method

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

Windlass Control Panel v1.0.1

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

Transkript:

Paket i Java Joachim von Hacht

The Java Language Specification (JLS) Beskriver formellt språket Java (senaste Java SE 8 edition) http://docs.oracle.com/javase/specs/ Ofta tung läsning (15.12.1) med det finns enklare avsnitt (4.1, 4.3.1) Hur man får skriva program (syntax) // Bad 4 = x; Betydelsen av olika uttryck (semantik) // Syntactically correct. What's the meaning? x++; // See, JLS 15.14.2, 15.15,1 ++x; Kompilatorn kontrollerar att alla regler följs

Identifierare "An identifier is an unlimited-length sequence of Java letters and Java digits, the first of which must be a Java letter."// JLS 3.8 A "Java letter" is a character for which the method Character. isjavaidentifierstart(int) returns true. A "Java letter-or-digit" is a character for which the method Character. isjavaidentifierpart(int) returns true. An identifier cannot have the same spelling (Unicode character sequence) as a keyword ( 3.9), boolean literal ( 3.10.3), or the null literal ( 3.10.7), or a compile-time error occurs.

Namn och Identifierare "A name is used to refer to an entity declared in a program." "There are two forms of names: simple names and qualified names." A simple name is a single identifier. A qualified name consists of a name, a "." token, and an identifier. // JLS 6.2

Namn och betydelse "The meaning of a name depends on the context [sammanhang, omgivning] in which it is used." // JLS 6.5 The determination of the meaning of a name requires three steps: First, context causes a name syntactically to fall into one of six categories: PackageName, TypeName, ExpressionName, MethodName, PackageOrTypeName, or AmbiguousName. Second, a name that is initially classified by its context as an AmbiguousName or as a PackageOrTypeName is then reclassified to be a PackageName, TypeName, or ExpressionName. Third, the resulting category then dictates the final determination of the meaning of the name (or a compile-time error if the name has no meaning).

Deklarationer "A declaration introduces an entity into a program and includes an identifier that can be used in a name [as a name] to refer to this entity" // JLS 6.1 Example: A class body may contain declarations of members of the class, that is, fields ( 8.3), classes ( 8.5), interfaces ( 8.5) and methods ( 8.4) // JLS 8.1.6 [Not all identifiers in programs are names... In declarations, where an identifier may occur to specify the name by which the declared entity will be known]

Synlighetsområde "The scope [synlighetsområde] of a declaration is the region of the program within which the entity declared by the declaration can be referred to using a simple name" // JLS 6.3 Frånsett context får ingenting i ett program heta samma sak men......synlighetsområden gör att vi kan använda samma namn (slipper hitta på nya) I Java finns bl.a. synlighetsområdet block scope (mellan {... }) "The package java is always in scope" Best practices: Use minimal scopes

Synlighetsområde för Klasser "The scope of a top level type [class, enum or interface] is all type declarations in the package in which the top level type is declared" //JLS 6.3

Paket "[Java] Programs are organized as sets of packages [paket]. Each package has its own set of names for types" // JLS 7 "The members of a package are its subpackages and all the top level class types [class, enum] and top level interface types declared in all the compilation units of the package." // JLS 7.1 "A package may not contain two members of the same name, or a compile-time error results."//jls 7.1

Paketdeklaration "A package declaration... specifies the name of the package to which the compilation unit [class, enum or interface] belongs" //JLS 7.4.1 package mypackage; //Declaration first in file import... // Qualified name of class is mypackage.myclass public class MyClass {... } Paketnamn med enbart små bokstäver (inte camelcase) Saknas deklaration: compilation unit in "unnamed package" Kan inte ha subpaket!

Paket i UML UML = Unified Modeling Language A package in UML package mypackage; import... public class MyClass {... } mypackage MyClass A class in UML

Paket Hierarkier Paketnamn har en hierakisk namnstruktur package mypackage; import... public class MyClass {... } package mypackage.sub; public class MyClass {... } mypackage MyClass sub MyClass Qualified name: mypackage.sub.myclass Sub-paket har ingen speciell relation (access), till omslutande paket, bara ett sätt att organisera

Paket och Synlighet A top level type [class, enum, interface] is accessible outside the package that declares it only if the type is declared public. // JLS 7 Men max en publik klass per fil (och då med samma namn som filen (.java)) En ny teknik för "information hiding", designmöjligheter! package mypackage; // No public before class class MyClass {... } mypackage MyClass Can't access from outside

Paket-intern access Obs! Att om man utelämnar private, protected eller public i klasser så gäller "default access" Innebär att alla typer i samma paket har åtkomst package mypackage; class MyClass { // Oh, oh, all classes can use! BAD! int secret =.. } Ange alltid accesspecifikation!

Import "An import declaration allows... a named type to be referred to by a simple name... Without the use of an appropriate import declaration, the only way to refer to a type declared in another package... is to use a fully qualified name" // JLS 7.5 import java.util.vector;... // Possible to use simple name Vector<String> v = new... Allt i java.lang.*; importeras automatiskt

Paketrepresentation Paket representeras i vårt fall som mappar i filsystemet mypackage MyClass mypackage sub MyClass MyClass.java sub Filsystem MyClass.java

Unika Paketnamn Modern programutveckling innebär att kod som producerats av andra (tredjepart) används (bibliotek). Kan leda till namnkollisioner "Developers should take steps to avoid the possibility of two published packages having the same name by choosing unique package names for packages that are widely distributed" //JLS 7.7 Använd "den omvända" internetdomänen som paket-prefix (inledning) tillsammans med Chalmers id, tillsammans med applikationens namn. Därefter subpaket enlig nedan // This should be unique (no types in prefix packages) se.chalmers.cid.myapp.mypackage.myclass

Exekvering med Paket JVM:en måste veta var alla klasser finns (för att kunna ladda in dessa) Alla standard Java klasser hittas automatiskt Klasser i aktuell katalog är kända (om de inte ingår i något paket), om en classpath inte anges För att ange var paketerade klasser finns används classpath (-cp) Ange namn på katalog som innehåller toppaketet (se) Därefter kvalificerat namnet på klass med main-metod Därefter eventuell kommandorads argument (String args[]) $ java -cp./bin se.chalmers.hajo.myapp.main Pelle (Notera att.class inte skrivs efter Main samt att. står för aktuell mapp) En.jar-fil är ett komprimerat arkiv (zip) som kan innehålla både.class-filer,.java-filer och andra resurser, t.ex. bildfiler. Om filen paris.jar är exekverbar betyder det att den innehåller en klass med en main()-metod (som pekas ut av manifestet). Den kan då köras genom kommandot $ java -jar paris.jar

Paket och Design Hur placera klasser i paket? Har med modulär design att göra (kommer mer i senare kurser) "Modular design, or "modularity in design", is an approach that subdivides a system into smaller parts (modules) that can be independently created and then used in different systems to drive multiple functionalities. A modular system can be characterized by the following: (1) Functional partitioning into discrete scalable, reusable modules consisting of isolated, self-contained functional elements (2) Rigorous use of well-defined modular interfaces, including object-oriented descriptions of module functionality (3) Ease of change to achieve technology transparency and, to the extent possible, make use of industry standards for key interfaces." //Wikipedia

Paket och Design i Denna Kurs Enkel uppdelning Klassen med main-metoden (Main.java) placeras som enda klass i paketet som ger applikationens namn (myapp) Klasser som ingår i OO-modellen placeras i ett paket (core eller model) Subsystem, klasser som används till att utföra en speciell service i eget paket (med utåt sammanhåller gränssnitt) GUI-klasser för sig Hjälpklasser (utilities) Dölj klasser som inte används av andra paket