Σχεδιασµός, Εµφάνιση και Υφος

Σχετικά έγγραφα
Δομές Δεδομένων - Εργαστήριο 2. Λίστες

Αντικειµενοστρεφής Προγραµµατισµός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Αντικειμενοστρεφής Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Βασικά της γλώσσας JAVA

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Δομές ελέγχου ροής προγράμματος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Η λέξη κλειδί this. Γαβαλάς Δαμιανός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

(C) 2010 Pearson Education, Inc. All rights reserved.

Εισαγωγή στον Προγραμματισμό

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 13/12/07

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

2.1. Εντολές Σχόλια Τύποι Δεδομένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

Διδάσκων: Παναγιώτης Ανδρέου

Οντοκεντρικός Προγραμματισμός

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΕΠΛ 012. JavaScripts

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

Αντικειμενοστρεφής Προγραμματισμός

Java sessions. Part 1 - Βασικά έννοιες - μέθοδοι

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

7. Δομές Ελέγχου (Control Statements)

SOAP API. Table of Contents

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

Υποστηρικτικό υλικό Σημειώσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

CSD Univ. of Crete Φθινόπωρο Άσκηση 1 Εκφώνηση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός

Αλγοριθμικές Δομές Επιλογής και Επανάληψης Συνθήκες, Λογικές Εκφράσεις και Βρόγχοι

5 Βιβλιοθήκες & Τεκµηρίωση

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις

Λογισµικό (Software SW) Γλώσσες

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

ΕΠΛ131 Αρχές Προγραμματισμού

Αντικειμενοστρεφής Προγραμματισμός

Γενικά (για τις γραπτές εξετάσεις)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

Κατανεμημένα Συστήματα. Javascript LCR example

ΗΥ-150. Προγραμματισμός

8. Μέθοδοι (Methods)

Βασικά Στοιχεία της Java

ΗΥ-150. Προγραμματισμός

Φροντιςτήριο. Linked-List

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

άσκηση Hide UI Elements 7.2 Try and Catch

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΚΑΙ ΕΞΕΤΑΣΤΕΑ ΥΛΗ. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Με τις Γλώσσες Προγραμματισμού Pascal, C, C++, Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

Εισαγωγή στην πληροφορική

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods

Προγραμματισμός Η/Υ (ΤΛ2007 )

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

Προγραμματισμός Αναδρομή

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

! Προσδιοριστές πρόσβασης και απόκρυψη πληροφορίας. ! Προγραμματιστικές Συμβάσεις. ! Σε περίπτωση που δεν χρησιμοποιείται προσδιοριστής

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

Homework 3 Solutions

Transcript:

ιοµήδης Σπινέλλης 1, Παναγιώτης Λουρίδας 2 1 Τµήµα ιοικητικής Επιστήµης και Τεχνολογίας Οικονοµικό Πανεπιστήµιο Αθηνών 2 Εθνικό ίκτυο Ερευνας και Τεχνολογίας Α.Ε. 19 εκεµβρίου 2006

Περιεχόµενα Αρχές και Αντιπαραδείγµατα 1 Αρχές και Αντιπαραδείγµατα

Περιεχόµενα Αρχές και Αντιπαραδείγµατα 1 Αρχές και Αντιπαραδείγµατα 2

οµηµένος Προγραµµατισµός Ο δοµηµένος προγραµµατισµός (structured programming) ϐασίζεται στην οργάνωση του προγράµµατος σε µικρές, αυτόνοµα κατανοητές, οντότητες. Για να επιτευχθεί αυτό κάθε οντότητα έχει ένα σηµείο εισόδου και ένα σηµείο εξόδου. Η δοµή του προγράµµατος ϐασίζεται σε τρεις µόνο λογικές δοµές: 1 ακολουθία (sequence) 2 επιλογή (condition) 3 επανάληψη (repetition) Με τη χρήση των παραπάνω δοµών µπορεί να εκφραστεί οποιοσδήποτε αλγόριθµος. Σε περιπτώσεις που η σχολαστική τήρηση των παραπάνω κάνει το πρόγραµµα δυσανάγνωστο πρέπει οι εξαιρέσεις να κωδικοποιούνται δοµηµένα, τεκµηριωµένα, µε οικονοµία στη χρήση τους, και µε τάξη.

Αντιπαράδειγµα οµηµένου Προγραµµατισµού Το παρακάτω κοµµάτι κώδικα προκάλεσε την εννιάωρη διακοπή του τηλεφωνικού δικτύου της Νέας Υόρκης στις 15 Ιανουαρίου 1990. 1 do { 2 / /... 3 switch 4 / /... 5 i f ( something ) { 6 / /... 7 break ; 8 / /... 9 } 10 / /... 11 } while ( somethingelse ) ; Το σωστό ϑα ήταν το παρακάτω, που και πάλι δεν είναι δοµηµένο:

Αντιπαράδειγµα οµηµένου Προγραµµατισµού Το παρακάτω κοµµάτι κώδικα προκάλεσε την εννιάωρη διακοπή του τηλεφωνικού δικτύου της Νέας Υόρκης στις 15 Ιανουαρίου 1990. 1 do { 2 / /... 3 switch 4 / /... 5 i f ( something ) { 6 / /... 7 break ; 8 / /... 9 } 10 / /... 11 } while ( somethingelse ) ; Το σωστό ϑα ήταν το παρακάτω, που και πάλι δεν είναι δοµηµένο: 1 do { 2 / /... 3 switch 4 / /... 5 CALL_CENTER_DOWN : 6 i f ( something ) { 7 / /... 8 break CALL_CENTER_DOWN ; 9 / /... 10 } 11 / /... 12 } while ( somethingelse ) ;

Ο Νόµος του Demeter Στον αντικειµενοστραφή προγραµµατισµό ο νόµος του Demeter ορίζει το συνιστώµενο τρόπο συνεργασίας των αντικειµένων. Ο νόµος αυτός προάγει την περιορισµένη σύζευξη µεταξύ κλάσεων. Ετσι σε κλάσεις µια µέθοδος επιτρέπεται µόνο να καλεί µεθόδους: της δικής της κλάσης αντικειµένων που έλαβε ως παραµέτρους αντικειµένων που δηµιούργησε αντικειµένων που περιέχει

Παράδειγµα Νόµου Demeter 1 c l a s s Demeter { 2 p r i v a t e A a ; 3 p r i v a t e i n t myfunc ( ) { /... / } 4 public void example ( B b ) { 5 C c = new C ( ) ; 6 i n t f = myfunc ( ) ; / / i t s e l f 7 8 / /... 9 b. parammethod ( ) ; / / parameter passed 10 a = new A ( ) ; 11 a. createdmethod ( ) ; / / created object 12 c. ownmethod ( ) ; / / contained object 13 } 14 }

Αντιπαράδειγµα Νόµου Demeter 1 c l a s s Demeter { 2 p r i v a t e A a ; 3 p r i v a t e i n t myfunc ( ) { /... / } 4 public void example ( B b ) { 5 C c = new C ( ) ; 6 i n t f = myfunc ( ) ; / / i t s e l f 7 8 / /... 9 b. parammethod ( ). othermethod ( ) ; / / WRONG!!! 10 a = new A ( ) ; 11 a. createdmethod ( ) ; / / created object 12 c. ownmethod ( ) ; / / contained object 13 } 14 }

Φρικώδικας 1 Αρχές και Αντιπαραδείγµατα 1 i f ( ( country == SING ) ( country == BRNI ) 2 ( country == POL ) ( country == ITALY ) ) 3 { 4 / 5 I f the country i s Singapore, B r u n e i or Poland 6 then the c u r r e n t time i s the answer time 7 r a t h e r than the o f f hook time. 8 Reset answer time and s e t day of week. 9 /

Φρικώδικας 2 Αρχές και Αντιπαραδείγµατα 1 i f ( month == FEB ) { 2 i f ( year % 4 == 0) 3 i f ( day > 29) 4 l e g a l = FALSE ; 5 else 6 i f ( day > 28) 7 l e g a l = FALSE ; 8 }

Φρικώδικας 2 ιόρθωση 1 i f ( month == FEB ) { 2 i f ( year % 4 == 0) { 3 i f ( day > 29) 4 l e g a l = FALSE ; 5 } else { 6 i f ( day > 28) 7 l e g a l = FALSE ; 8 } 9 }

Φρικώδικας 2 Βελτίωση Ο ϐελτιωµένος κώδικας είναι πιο καθαρός και επιπλέον υπολογίζει σωστά τα δίσεκτα έκτη στα πολλαπλάσια του 400. 1 i f ( month == FEB ) { 2 i n t nday ; 3 4 nday = 2 8 ; 5 i f ( ( year % 400 == 0) ( ( year % 100! = 0) && ( year % 4 == 0 ) ) ) 6 nday = 2 9 ; 7 i f ( day > nday ) 8 l e g a l = FALSE ; 9 }

Φρικώδικας 3 Αρχές και Αντιπαραδείγµατα 1 / / Compute r o o t s of a quadratic equation 2 / / T h i s code assumes t h a t ( b b 4 a c ) i s p o s i t i v e 3 temp = Math. s q r t ( b b 4 a c ) ; 4 r o o t [ 0 ] = ( b + temp ) / (2 a ) ; 5 r o o t [ 1 ] = ( b temp ) / (2 a ) ; 6 7... 8 9 / / swap the r o o t s 10 temp = r o o t [ 0 ] ; 11 r o o t [ 0 ] = r o o t [ 1 ] ; 12 r o o t [ 1 ] = temp ;

Φρικώδικας 3 ιόρθωση 1 / / Compute r o o t s of a quadratic equation 2 / / T h i s code assumes t h a t ( b b 4 a c ) i s p o s i t i v e 3 d i s c r i m i n a n t = Math. s q r t ( b b 4 a c ) ; 4 r o o t [ 0 ] = ( b + d i s c r i m i n a n t ) / (2 a ) ; 5 r o o t [ 1 ] = ( b d i s c r i m i n a n t ) / (2 a ) ; 6 7... 8 9 / / swap the r o o t s 10 temp = r o o t [ 0 ] ; 11 r o o t [ 0 ] = r o o t [ 1 ] ; 12 r o o t [ 1 ] = temp ;

Φρικώδικας 4 Αρχές και Αντιπαραδείγµατα 1 / 2 d e f a u l t 3 / 4 d e f a u l t : 5 break ; 1 / r e t u r n SUCCESS / 2 r e t u r n SUCCESS ; 1 zerocount ++; / Increment zero e n t r y counter / 1 / I n i t i a l i s e " t o t a l " to " number_received " / 2 node. t o t a l = node. number_received ;

Φρικώδικας 5 Αρχές και Αντιπαραδείγµατα Ερώτηση: Τι κάνει το παρακάτω πρόγραµµα 1 public c l a s s CleverSwap { 2 public s t a t i c void main ( String [ ] args ) { 3 i n t x = 1984; 4 i n t y = 2001; 5 y = ( x ^= ( y ^= x ) ) ^ y ; 6 System. out. p r i n t l n ( " x = " + x + " ; y = " + y ) ; 7 } 8 }

Φρικώδικας 5 Αρχές και Αντιπαραδείγµατα Ερώτηση: Τι κάνει το παρακάτω πρόγραµµα 1 public c l a s s CleverSwap { 2 public s t a t i c void main ( String [ ] args ) { 3 i n t x = 1984; 4 i n t y = 2001; 5 y = ( x ^= ( y ^= x ) ) ^ y ; 6 System. out. p r i n t l n ( " x = " + x + " ; y = " + y ) ; 7 } 8 } Απάντηση: Ο,τι και αυτό 1 public c l a s s CleverSwap { 2 public s t a t i c void main ( String [ ] args ) { 3 i n t x = 1984; 4 i n t y = 2001; 5 i n t tmp ; 6 7 tmp = x ; 8 x = y ; 9 y = tmp ; 10 11 System. out. p r i n t l n ( " x = " + x + " ; y = " + y ) ; 12 } 13 }

Σχόλιο στην Αρχή του Αρχείου 1 / Τα σχόλια γράφονται στα αγγλικά Τα * στοιχίζονται κάθετα µεταξύ τους Ονοµα κλάσης Το όνοµα του αρχείου πρέπει να είναι ίδιο µε το όνοµα της κλάσης Προσδιοριστής CVS/RCS. Copyright 2 C l a s s name 3 4 $Id$ 5 6 Copyright year name/ o r g a n i s a t i o n. 7 /

Προΐµιο της Κλάσης 7 8 9 package gr. aueb. dmst. Package ; 10 11 import java. bla. blough. b l i g h ; 12 13 / 14 One l i n e c l a s s summary. 15 C l a s s summary. 16 17 @version 1.82 18 Mar 1999 18 @author Name Surname 19 /

ήλωση της Κλάσης 20 21 public c l a s s S p e c i a l H t m l P a r s e r extends F i l e H t m l P a r s e r { 22 / 23 C l a s s implementation comment. 24 /

Πεδία Κλάσης Αρχές και Αντιπαραδείγµατα 24 / One l i n e comment of c l a s s V a r 1 / 25 public s t a t i c i n t c l a s s V a r 1 ; 26 27 / One l i n e comment of c l a s s V a r 2 / 28 protected s t a t i c i n t c l a s s V a r 2 ; 29 30 / One l i n e comment of c l a s s V a r 3 / 31 s t a t i c i n t c l a s s V a r 3 ; 32 33 / 34 One l i n e comment of c l a s s V a r 4 35 Summary of c l a s s V a r 4 36 / 37 p r i v a t e s t a t i c Object c l a s s V a r 4 ;

Πεδία Υπόστασης Αρχές και Αντιπαραδείγµατα 38 / One l i n e comment of c l a s s V a r 1 / 39 public i n t c l a s s V a r 1 ; 40 41 / One l i n e comment of c l a s s V a r 2 / 42 protected i n t c l a s s V a r 2 ; 43 44 / One l i n e comment of c l a s s V a r 3 / 45 i n t c l a s s V a r 3 ; 46 47 / 48 One l i n e comment of c l a s s V a r 4 49 Summary of c l a s s V a r 4 50 / 51 p r i v a t e Object c l a s s V a r 4 ;

Μέθοδοι Κατασκευής 52 / Construct a p a r s e r f o r the s p e c i f i e d HTML d i a l e c t. / 53 S p e c i a l H t h m l P a r s e r ( S t r i n g d i a l e c t, i n t maxnesting ) { 54 / / Code 55 } 56 57 / Construct a d e f a u l t HTML p a r s e r. / 58 SpecialHTMLParser ( S t r i n g d i a l e c t ) { }

Λοιπές Μέθοδοι Αρχές και Αντιπαραδείγµατα 1 2 / 3 One l i n e method comment. 4 Summary o f method. 5 / 6 public void dosomething ( ) { }

ηλώσεις Μεταβλητών 1 i n t n L i n e s = 0 ; / / HTML l i n e s i n the f i l e 2 i n t nchars = 0 ; / / Number of characters i n the f i l e 3 i n t i ; 4 double averagedensity = 1. 0 ; / / Average d e n s i t y of comme 5 Car t r a n s p o r t ; / / T r a n s p o r t to use

Στοίχιση οµής for Αρχές και Αντιπαραδείγµατα 1 f o r ( ; ; ) 2 a++; 3 4 f o r ( i n t j = 0 ; j < 1 0 ; j ++) { 5 a++; 6 b++; 7 }

Στοίχιση οµής while 1 while ( a < 10) { 2 a++; 3 b += 1 2 ; 4 } 5 6 while ( a < 10) { 7 a++; 8 f o r ( i n t i = 0 ; i < 1 0 ; i ++) 9 b += 1 2 ; 10 }

Στοίχιση οµής do while 1 do { 2 a++; 3 b += 1 2 ; 4 } while ( a < 1 0 ) ;

Στοίχιση οµής switch 1 switch ( c ) { 2 case a : 3 System. out. p r i n t l n ( " Alpha " ) ; 4 break ; 5 case b : 6 System. out. p r i n t l n ( " Bravo " ) ; 7 break ; 8 d e f a u l t : 9 System. out. p r i n t l n ( "??? " ) ; 10 break ; 11 }

Στοίχιση οµής if, if else 1 i f ( a == 3) { 2 System. out. p r i n t l n ( " Threee " ) ; 3 k = 5 2 ; 4 } 1 i f ( a == 3) { 2 System. out. p r i n t l n ( " Threee " ) ; 3 k = 5 2 ; 4 } else { 5 System. out. p r i n t l n ( " Not three " ) ; 6 k = 5 5 ; 7 }

Στοίχιση οµής if else, if else... if else 1 i f ( a == 3) 2 System. out. p r i n t l n ( " Threee " ) ; 3 else 4 System. out. p r i n t l n ( " Not three " ) ; 1 i f ( s. equals ( " a " ) 2 system. out. p r i n t l n ( " Alpha " ) ; 3 else i f ( s. equals ( " b " ) 4 system. out. p r i n t l n ( " Bravo " ) ; 5 else i f ( s. equals ( " c " ) 6 system. out. p r i n t l n ( " C h a r l i e " ) ; 7 else 8 system. out. p r i n t l n ( "??? " ) ;

Στοίχιση οµής try/catch/finally 1 t r y { 2 i = 1 2 ; 3 o. mymethod ( ) ; 4 } catch ( ExceptionClass e ) { 5 statements ; 6 } f i n a l l y { 7 statements ; 8 }

Javadoc Μεθόδου Αρχές και Αντιπαραδείγµατα 1 / 2 Returns an Image object that can then be painted on the screen. 3 The u r l argument must specify an absolute { @link URL }. The name 4 argument i s a specifier that i s relative to the u r l argument. 5 <p> 6 T h i s method always returns immediately, whether or not the 7 image e x i s t s. When t h i s applet attempts to draw the image on 8 the screen, the data w i l l be loaded. The graphics p ri m it iv e s 9 that draw the image w i l l incrementally paint on the screen. 10 11 @param u r l an absolute URL giving the base location of the image 12 name the location of the image, relative to the u r l argument 13 @return the image at the s p e c i f i e d URL 14 @see Image 15 / 16 public Image getimage ( URL u r l, S t r i n g name) { 17 t r y { 18 r e t u r n getimage (new URL ( url, name ) ) ; 19 } catch ( MalformedURLException e ) { 20 return null ; 21 } 22 }

Ειδικές Λέξεις στα Σχόλια 1 / 2 A non javadoc comment w i t h a s p e c i a l keyword 3 ( recommended keywords i n p a r e n t h e s i s ) 4 5 ( XXX, FIXME, TODO ) : The comment 6 /