Table of Contents

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ - PASCAL - JAVA - NETBEANS - UML

Έκδοση 0.1

Εισαγωγή

Εγκατάσταση Εργαλείων ανάπτυξης για Pascal - Java

Εγκατάσταση Lazarus IDE για Pascal

Windows

Linux

Εγκατάσταση Java

Windows

Linux

Εγκατάσταση Netbeans IDE για Java

Windows

Linux

Εγκατάσταση UML plugin στο Netbeans για Μοντελοποίηση

Εγχειρίδια - Βοηθήματα

Pascal

Java - console

Αντιστοιχία Pascal και Java

Δείτε παρακάτω μια εισαγωγική αντιστοίχιση λειτουργιών και εντολών μεταξύ Pascal και Java http://www.geocities.com/SiliconValley/Park/3230/pas/pas2java.html Λόγω της έλλειψης αρκετών βασικών εντολών εισόδου-εξόδου σε κονσόλα, θα χρειαστούμε επίσης μια class Console που θα μας τις παρέχει. Θα χρησιμοποιήσουμε λοιπόν μια τροποποιημένη έκδοση του αρχείου Console.java που βρέθηκε σε δικτυακό φάκελο ενός πανεπιστημίου στην Washightonμετά από αναζήτηση στο Internet, . http://faculty.washington.edu/edhong/previousquarters/305wi03/statpac/

Java - gui

Μοντελοποίηση - uml - Netbeans

Συμβάσεις

Ξεκινώντας

Δημιουργία ενός έργου - project

Ξεκινώντας θα πρέπει να δημιουργήσουμε ένα νέο project σε ένα περιβάλλον ανάπτυξης για μια γλώσσα προγραμματισμού. Εδώ θα δούμε τα περιβάλλοντα Lazarus 0.9 για Pascal και Netbeans 5.5 για Java

Pascal

Εκκινούμε το περιβάλλον ανάπτυξης Pascal Lazarus

Java - console

Εκκινούμε το περιβάλλον ανάπτυξης Java Netbeans

Java - gui

Έξοδος στην Οθόνη

Στο πρώτο πρόγραμμά μας παραδοσιακά θα ξεκινήσουμε εμφανίζωντας το μύνημα 'Hello World!' στην προκαθορισμένη έξοδο (stdout: standard output) που είναι η οθόνη.

Pascal

Το πρόγραμμά μας ξεκινάει από το begin και τελειώνει στο end. Για να εμφανίσουμε το μύνημα γράφουμε ανάμεσα, την εντολή

writeln('Hello World');

Για να σταματήσουμε το πρόγραμμά μας, ώστε να δούμε τα αποτελέσματα στην οθόνη, ακριβώς πριν το end. γράφουμε

readln;

Το κάνουμε έτσι να περιμένει από την προκαθορισμένη είσοδο (stdin: standard input) που είναι η οθόνη, να πληκτρολογήσουμε κάτι και να πατήσουμε ENTER.

Αν δουλεύουμε σε linux θα πρέπει να ορίσουμε να εμφανίζει κάπου τα αποτελέσματα ως εξής:

Για να το εκτελέσουμε,( να το τρέξουμε)

Java - console

Το πρόγραμμά μας ξεκινάει από το

public static void main(String[] args) { και τελειώνει στο αμέσως επόμενο }.

Για να εμφανίσουμε το μύνημα γράφουμε ανάμεσα, την εντολή

System.out.print("Hello World!");

(Χρησιμοποιούμε την αυτόματη συμπλήρωση. Γράφουμε System.o, πατάμε enter, γράφουμε p, παταμε enter κτλ)

Για να το εκτελέσουμε,( να το τρέξουμε)

Java - gui

Ασκήσεις

Εισαγωγή στις έννοιες αντικειμένων

Τα πολύπλοκα προβλήματα χρειάζονται σωστή σχεδίαση και διάσπασή τους σε μικρότερα κομμάτια, ώστε να απλοποιηθούν και να λυθούν βήμα βήμα. Θέλουμε να φτιάξουμε ένα παιχνίδι, κάτι αρκετά πολύπλοκο. Η έννοια των αντικειμένων που έχουμε γύρω μας είναι οικεία και υπάρχει και στον προγραμματισμό.

Θέλουμε να εμφανίζεται ένα αρχικό μενού επιλογών στο χρήστη1). Για παράδειγμα:

1.Enarksi
2.Epiloges
3.HighSkor
4.Boitheia
5.Exodos

Θα ορίσουμε στον Κόσμο του Παιχνιδιού μας, μια Κατηγορία αντικειμένου Menou, όπως υπάρχει στον πραγματικό μας κόσμο η Κατηγορία ζώου Σκύλος. Θα δημιουργήσουμε στην συνέχεια ένα νεό στιγμιότυπο κατηγορίας αντικειμένου Menou και θα το ονομάσουμε BasikoMenou. Όπως γεννιέται ένα νέος Σκύλος και τον ονομάζουμε Λάσι.

Πραγματικός Κόσμος Κόσμος Παιχνιδιού
Κατηγορία Σκύλος Menou
Στιγμιότυπο Λάσι BasikoMenou
Σκύλος χρώμα ηλικία
Λάσι καφέ 0
Menou arithmosEpilogon keimenoEpilogis[] epilogiExodou epilogi
BasikoMenou 5 '1.Enarksi', '2.Epiloges' .. 5 -1

Ο σκύλος γεννιέται, έτσι και η κατηγορία Menou θα έχει μια διαδικασία δημιουργίας που συνήθως έχει όνομα ίδιο με την κατηγορία δηλαδή Menou(). O σκύλος τρώει, τρέχει, γαυγίζει. Έτσι και η κατηγορία Menou έχει μια διαδικασία εμφανισης: Emfanisi() αλλά και απαντάει αν την ρωτήσουμε ποια είναι η τρέχουσα επιλογή του χρήστη, την συνάρτηση GetEpilogi().

Πριν προχωρήσουμε στην σχεδίαση θα πρέπει να δούμε τι εργαλεία μας δίνουν οι γλώσσες προγραμματισμού για :

Βασικοί Τύποι μεταβλητών

Τα χαρακτηριστικά των αντικειμένων και οτιδήποτε άλλο θέλουμε να αποθηκεύσουμε κάπου πριν το χειριστούμε, αποθηκεύονται σε μεταβλητές, ανάλογα με την τιμή τους, (κείμενο, ακέραιος ή δεκαδικός αριθμός κτλ)

Τύπος2) Μέγεθος bytes 3) Pascal Java Τιμές4)
μικρός ακέραιος 1 shortint short -128..127
ακέραιος 2 integer int -32768..32767
μεγάλος ακέραιος 4 longint long -2δις έως 2δις5)
πραγματικός 6 real float όλοι6)
χαρακτήρας 1 char char
κείμενο 255 string String έως 255 χαρακτήρες7)
λογικός 1 8) boolean boolean true ή false
μικρός ακέραιος+ 1 byte byte 0 .. 2559)
ακέραιος+ 2 word 0 .. 65535

Για να μην μπλεχτούμε στις διαφορές μεταξύ γλωσσών προγραμματισμού, στους ακεραίους δεν ασχολούμαστε με τους θετικούς και ξεχνάμε ότι η java μας επιτρέπει μεγαλύτερες τιμές

Σχεδίαση κατηγοριών αντικειμένων

Κατηγορία Menou

Πάμε λοιπόν να σχεδιάσουμε σε UML την κατηγορία Menou.

UML

Εκκινούμε το περιβάλλον ανάπτυξης Java Netbeans

Class (ή κλάση) είναι η κατηγορία του αντικειμένου:

Ασκήσεις

Κατηγορία FidakiGame

Ωραία ως εδώ έχουμε ορίσει μια γενική κατηγορία Menou. Όμως κάποιος πρέπει να την χρησιμοποιήσει. Να δημιουργήσει κάποιο στιγμιότυπό της. Φανταστείτε ότι έχετε γράψει οδηγίες για το τι υλικά και τι ενέργειες χρειάζονται για να φτιάξετε ένα γλυκό. Κάποιος δεν πρέπει να ξεκινήσει και να το φτιάξει;

Στον κόσμο του Παιχνιδιού μας αυτός ο κάποιος, είναι μια άλλη κατηγορία, ας την πούμε FidakiGame. Αυτή η κατηγορία αντιπροσωπεύει ολόκληρο το παιχνίδι. Έχει ως χαρακτηριστικό της (attribute) όχι μεταβλητές τύπου int,String κτλ το BasikoMenou που είναι στιγμιότυπο της κατηγορίας Menou. Σαν να λέγαμε ότι ο Κώστας έχει στα χαρακτηριστικά του, την ηλικία του (απλή μεταβλητή), τον σκύλο του την Λάσι που είναι ένας Σκύλος και ένα γλυκό κανταϊφι που είναι στιγμιότυπο ενός Γλυκού.

θα πρέπει όμως να κάνει τον κόπο να το φτιάξει, με μια διαδικασία DimiourgiaGlikou(). Έτσι και εμείς θα πρέπει να φτιάξουμε το basikoMenou. Θα το κάνουμε με την διαδικασία dimiourgiaBasikoMenou().

Ας φτιάξουμε λοιπόν την κατηγορία αυτή, τα χαρακτηριστικά και τις διαδικασίες τις

UML

  1. Δημιουργία κατηγορίας FidakiGame, με τον ίδιο τρόπο όπως και πριν
  2. Προσθήκη χαρακτηριστικών στην κατηγορία Menou
    • Ένα χαρακτηριστικό με όνομα basikoMenou και τύπο Menou
  3. Προσθήκη διαδικασίας στην κατηγορία FidakiGame
    • Μια διαδικασία με όνομα dimiourgiaBasikoMenou().
  4. Δημιουργία αυτόματα του κώδικα σε Java με τον τρόπο που είδαμε πριν στον φάκελο FidakiPrj/src/fidakiprj
    • Δημιουργήθηκε μια νέα κατηγορία (κλάση) java FidakiGame. Για να την δούμε πάμε FidakiPrj/Source Packages/fidakiprj

Ασκήσεις

Δημιουργία και εμφάνιση ενός μενού

Έχουμε σχεδιάσει σε αρχικό στάδιο την εφαρμογή μας. Στο κυρίως πρόγραμμα λοιπόν :

  1. θα ξεκινήσουμε να δημιουργήσουμε το στιγμιότυπο μιας κατηγορίας FidakiGame με όνομα newGame.
  2. Στην διαδικασία δημιουργίας του, FidakiGame(), Θα εισάγουμε περιεχόμενο στο basikoMenou, βάζωντας κώδικα στην διαδικασία dimiourgiaBasikoMenou(). θα φτιάξουμε έναν πίνακα από 5 κείμενα (strings) και θα τον εισάγουμε στο basikoMenou καλώντας την διαδικασία του setKeimenoEpilogis()
  3. Θα εμφανίσουμε το μενού καλώντας μια καινούργια διαδικασία emfanisi() της κατηγορίας FidakiGame, στην οποία θα καλούμε με την σειρά μας την διαδικασία εμφάνιση του menou

Java - console

Στην κλάση Main στην διαδικασία public static void main(String[] args) εισάγουμε τον παρακάτω κώδικα

FidakiGame newGame= new FidakiGame();

Δοκιμάζουμε να εκτελέσουμε το πρόγραμμα. Θα μας εμφανιστεί μύνημα λάθους, ότι δεν μπορεί να βρει την κατηγορία FidakiGame. Για να το επιλύσουμε προσθέτουμε στις κατηγορίες FidakiGame και Menou την δήλωση ότι ανήκουν στο πακέτο fidakiprj, όπως ήδη ανήκει η main

package fidakiprj;

Στην κατηγορία FidakiGame στην διαδικασία public void dimiourgiaBasikoMenou() εισάγουμε τον παρακάτω κώδικα.

short arithmosEpilogon=5;
basikoMenou = new Menou();
basikoMenou.setArithmosEpilogon(arithmosEpilogon);
ArrayList<String> keimeno = new ArrayList(arithmosEpilogon);
keimeno.add("1.Enarksi");
keimeno.add("2.Epiloges");
keimeno.add("3.HighSkor");
keimeno.add("4.Boitheia");
keimeno.add("5.Exodos");
basikoMenou.setKeimenoEpilogis(keimeno);          

Δοκιμάζουμε να το τρέξουμε. Θα μας εμφανίσει μύνημα ότι δεν μπορεί να βρεί την κατηγορία ArrayList. Για να του δόσουμε οδηγίες που θα την εντοπίσει εισάγουμε στην 2η γραμμή της κατηγορίας FidakiGame κάτω από το package fidakiprj;

package fidakiprj;
import java.util.ArrayList;

Κατά την δημιουργία της κατηγορίας FidakiGame (στην διαδικασία FidakiGame()) όλα τα χαρακτηριστικά της πρέπει να πάρουν αρχική τιμή. Για το λόγο αυτό θα καλέσουμε την διαδικασία dimiourgiaBasikoMenou() που αρχικοποιεί/δημιουργεί τo basikoMenou.

public FidakiGame() {
      this.dimiourgiaBasikoMenou();
  }

Δημιουργούμε μια νέα διαδικασία στην κατηγορία FidakiGame με όνομα emfanisi() και στον κώδικά της ορίζουμε να καλεί την διαδικασία emfanisi() του Menou, basikoMenou. Την τοποθετούμε πριν από το τελευταίο } που είναι το τέλος της κατηγορίας.

public void emfanisi() {
      basikoMenou.emfanisi();
  }

Εισάγουμε τον κώδικα εμφάνισης στην διαδικασία emfanisi() της κατηγορίας Menou

public void emfanisi() {
      int i;
      String keimeno;
      keimeno= new String();
      i=0;
      for(i=0; i<=4; i++){
          keimeno=this.keimenoEpilogis.get(i);
          System.out.println(keimeno);
      }
  }

Τέλος στο κυρίως πρόγραμμα στην Main κλάση, καλούμε την διαδικασία εμφάνισης του στιγμιοτύπου newGame

FidakiGame newGame= new FidakiGame();
newGame.emfanisi();

Τρέχουμε την εφαρμογή μας. Επειδή έχουμε κάνει αλλαγές στις κατηγορίες μας προσθέτοντας μια καινούργια διαδικασία emfanisi στην κατηγορία FidakiGame, θα ενημερώσουμε το UML διάγραμμα ως εξής:

Ασκήσεις

Νέο Κεφάλαιο

UML

Pascal

Java - gui

Ασκήσεις

1)
Θα χρησιμοποιούμε greeklish διότι η εμφάνιση ελληνικών στην κονσόλα πολλές φορές έχει προβλήματα. Αν σε εσάς εμφανίζονται γράψτε κανονικά ελληνικά
2)
όπου + είναι μόνο θετικοί, αλλιώς μισοί θετικοί, μισοί αρνητικοί
3)
περίπου αφού ανά γλώσσα και πλατφόρμα μπορεί να διαφέρει
4)
Στην java οι προσημασμένοι ακέραιοι είναι byte,short,int,long με 1,2,4 και 8 bytes αντίστοιχα
5)
περίπου
6)
με όριο μόνο στην ακρίβεια
7)
Στην java και περισσότεροι
8)
1 bit κανονικά
9)
-128..127 στην java