Τίτλος. «Ανάπτυξη της εφαρμογής με τίτλο: Daily Calories & Body Fitness σε Android περιβάλλον»

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Τίτλος. «Ανάπτυξη της εφαρμογής με τίτλο: Daily Calories & Body Fitness σε Android περιβάλλον»"

Transcript

1 ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Τίτλος «Ανάπτυξη της εφαρμογής με τίτλο: Daily Calories & Body Fitness σε Android περιβάλλον» Ονομ/νυμο: Δημήτριος Σιδηρόπουλος ΑΕΜ: 601 Ονοματεπώνυμο επιβλέποντα καθηγητή: Αλκιβιάδης Ακρίτας Σελ. 1/122

2 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. ΠΕΡΙΓΡΑΦΗ ΠΕΡΙΓΡΑΦΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ ΡΟΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΥΠΟΛΟΓΙΣΤΙΚΟΙ ΤΥΠΟΙ ΒΑΣΙΚΟΣ ΡΥΘΜΟΣ ΜΕΤΑΒΟΛΙΣΜΟΥ ΗΜΕΡΗΣΙΕΣ ΘΕΡΜΙΔΙΚΕΣ ΑΝΑΓΚΕΣ ΚΑΤΑΤΑΞΗ ΣΩΜΑΤΙΚΟΥ ΒΑΡΟΥΣ ΚΑΙ ΑΣΘΕΝΟΥΣ ΙΔΑΝΙΚΟ ΒΑΡΟΣ ΕΡΓΑΛΕΙΑ ECLIPSE (ΕΚΔΟΣΗ KEPLER) INKSCAPE SQLITE DATABASE BROWSER ΟΙ ΣΥΣΚΕΥΕΣ ΚΩΔΙΚΑΣ ΤΗΣ ΕΦΑΡΜΟΓΗΣ ANDROID PROJECT: DAILYCALORIESBODYFITNESS ΦΑΚΕΛΟΣ SRC Αρχείο LanguageSelection.java Αρχείο EntryForm.java Αρχείο ResultScreen.java Αρχείο BodyFormula.java Αρχείο Diet.java Αρχείο DietDatabaseHelper.java ΦΑΚΕΛΟΣ GEN Αρχείο R.java ΦΑΚΕΛΟΣ RES Φάκελος drawable Αρχείο greek_language_button.xml: Αρχείο english_language_button.xml Φάκελος layout Αρχείο language_selection.xml Αρχείο entry_form.xml Αρχείο result_screen.xml Αρχείο day.xml Αρχείο diet.xml Φάκελος layout-land Αρχείο language_selection.xml Σελ. 2/122

3 4.3.4 Φάκελος layout-large Αρχείο language_selection.xml Αρχείο entry_form.xml Αρχείο result_screen.xml Αρχείο day.xml Αρχείο diet.xml Φάκελος layout-large-land Αρχείο language_selection.xml Αρχείο entry_form.xml Αρχείο result_screen.xml Αρχείο day.xml Αρχείο diet.xml Φάκελος layout-small Αρχείο language_selection.xml Φάκελος layout-small-land Αρχείο language_selection.xml Φάκελος layout-sw600dp Αρχείο language_selection.xml Αρχείο entry_form.xml Αρχείο result_screen.xml Αρχείο day.xml Αρχείο diet.xml Φάκελος layout-sw600dp-land Αρχείο language_selection.xml Αρχείο entry_form.xml Αρχείο result_screen.xml Αρχείο day.xml Αρχείο diet.xml Φάκελος layout-sw720dp Αρχείο language_selection.xml Αρχείο entry_form.xml Αρχείο result_screen.xml Αρχείο day.xml Αρχείο diet.xml Φάκελος layout-sw720dp-land Αρχείο language_selection.xml Αρχείο entry_form.xml Αρχείο result_screen.xml Αρχείο day.xml Αρχείο diet.xml Φάκελος values Αρχείο arrays.xml Αρχείο colors.xml Αρχείο strings.xml Αρχείο AndroidManifest.xml στο φάκελο res ΠΙΘΑΝΕΣ ΕΠΕΚΤΑΣΕΙΣ (UPDATES) ΒΙΒΛΙΟΓΡΑΦΙΑ Σελ. 3/122

4 1. ΠΕΡΙΓΡΑΦΗ 1.1. Περιγραφή της εφαρμογής Η εφαρμογή Daily Calories & Body Fitness είναι μια υπολογιστική εφαρμογή που ανήκει στην κατηγορία των Calculators. Ο τίτλος της εφαρμογής μαρτυρά τις υπηρεσίες που προσφέρει στο χρήστη, οι οποίες είναι: A. Υπολογισμός βασικού ρυθμού μεταβολισμού B. Υπολογισμός ημερήσιων θερμιδικών αναγκών C. Κατάταξη σωματικού βάρους και κατάταξη ασθενούς D. Υπολογισμός ιδανικού βάρους E. Προβολή ενδεικτικής διατροφής μίας εβδομάδας 1.2. Ροή του προγράμματος Στην αρχική σελίδα της εφαρμογής ο χρήστης καλείται να επιλέξει μια εκ των δύο υποστηριζόμενων γλωσσών (Ελληνικά, Αγγλικά) για να συνεχίσει την περιήγησή του (Εικόνα 1, Εικόνα 2). Εικόνα 1 (επιλογή ελληνικής γλώσσας) Εικόνα 2 (επιλογή αγγλικής γλώσσας) Σελ. 4/122

5 Στη συνέχεια περνάμε στη δεύτερη οθόνη όπου ο χρήστης συμπληρώνει τα στοιχεία του που είναι: Βάρος (kg), Ηλικία (έτη), φύλο, ύψος (cm) και επίπεδο φυσικής δραστηριότητας (Εικόνες 3α,3β). Εικόνα 3α (φόρμα συμπλήρωσης στοιχείων χρήστη (ελληνικά)) Εικόνα 3β (φόρμα συμπλήρωσης στοιχείων χρήστη (αγγλικά)) Από τα παραπάνω στοιχεία που δίνει ο χρήστης, το βάρος, η ηλικία και το ύψος μπορούνε να δεχτούν μόνο ακέραιους αριθμούς των οποίων η εμβέλεια περιορίζεται ως εξής: Βάρος -> Τιμές από 40 έως 180 Ηλικία -> Τιμές από 18 έως 90 Ύψος -> Τιμές από 150 έως 200 Αν ο χρήστης εισάγει αριθμό εκτός εμβέλειας π.χ. Βάρος=30 και πατήσει το κουμπί Υπολογισμός που βρίσκεται στο κάτω μέρος της οθόνης, εμφανίζεται ένα μήνυμα που τον ενημερώνει για τις έγκυρες τιμές που μπορεί να πάρει το συγκεκριμένο πεδίο (Εικόνες 4α,4β). Σελ. 5/122

6 Εικόνα 4α (βάρος εκτός ορίων (ελληνικά)) Εικόνα 4β (βάρος εκτός ορίων (αγγλικά) Ο έλεγχος για τις έγκυρες τιμές των στοιχείων γίνεται από πάνω προς τα κάτω, δηλαδή πρώτα ελέγχεται για ορθότητα το βάρος, έπειτα η ηλικία και τέλος το ύψος. Αν ο χρήστης ξεχάσει να συμπληρώσει κάποιο πεδίο π.χ. το βάρος και πατήσει το κουμπί Υπολογισμός τότε εμφανίζεται ένα σύντομο μήνυμα που τον προτρέπει να το συμπληρώσει (Εικόνες 5α,5β). Εκτός από τα στοιχεία με τον περιορισμό εμβέλειας τιμών που αναφέρθηκαν υπάρχουν ακόμα δύο πεδία, το φύλο και το επίπεδο φυσικής δραστηριότητας. Στην περίπτωση του φύλου, ο χρήστης επιλέγει ενός εκ των δύο πιθανών: άντρας, γυναίκα, ενώ σε αυτήν του επιπέδου φυσικής δραστηριότητας μπορεί να επιλέξει μιας εκ των τεσσάρων πιθανών: Ελάχιστη (άρρωστος, πλήρης ακινησία), Ελαφριά (καθιστική ζωή, δουλειά γραφείου), Μέτρια (πιο έντονη δραστηριότητα, περπάτημα) και Έντονη (2 φορές τη βδομάδα 2 ώρες γυμναστική) (Εικόνες 6α,6β και 7α,7β αντίστοιχα). Αν ο χρήστης δεν επιλέξει κάτι ο ίδιος, τότε το πρόγραμμα θεωρεί ως προεπιλογές για το φύλο -> άντρας και για το επίπεδο φυσικής δραστηριότητας -> ελάχιστη. Σελ. 6/122

7 Εικόνα 5α (μήνυμα σε περίπτωση μη εισαγωγής βάρους (ελληνικά) Εικόνα 5β (μήνυμα σε περίπτωση μη εισαγωγής βάρους (αγγλικά)) Εικόνα 6α (επιλογή φύλου (ελληνικά)) Εικόνα 6β (επιλογή φύλου (αγγλικά)) Σελ. 7/122

8 Εικόνα 7α (επιλογή επιπέδου φυσικής δραστηριότητας (ελληνικά)) Εικόνα 7β (επιλογή επιπέδου φυσικής δραστηριότητας (αγγλικά)) Εφόσον συμπληρωθούν όλα τα πεδία εντός των επιτρεπτών ορίων και πατηθεί το κουμπί Υπολογισμός εμφανίζεται η οθόνη με τα αποτελέσματα που αφορούν: το βασικό ρυθμό μεταβολισμού, τις ημερήσιες θερμιδικές ανάγκες, την κατάταξη σωματικού βάρους και ασθενούς και το ιδανικό βάρος. Το πρόγραμμα επίσης υπολογίζει πόσο θα έπρεπε να είναι οι ημερήσιες θερμιδικές ανάγκες βάση του ιδανικού βάρους και, εάν το αποτέλεσμα είναι μικρότερο του 3828 (θερμίδες), τότε προτείνει στο χρήστη ενδεικτική διατροφή μίας εβδομάδας (Εικόνες 8,9). Διαφορετικά, εάν οι ημερήσιες θερμιδικές ανάγκες ξεπερνούν τις 3828, τότε το πρόγραμμα αντί για διατροφή εμφανίζει ένα μήνυμα που παρακινεί το χρήστη να επισκεφθεί διαιτολόγο διότι οι θερμίδες που πρέπει να παίρνει υπερβαίνουν τις ανάγκες του μέσου χρήστη και χρειάζεται ειδική διατροφή (Εικόνες 10α,10β). Οι συνολικές διατροφές που περιλαμβάνει η εφαρμογή είναι: 1300, 1500, 1800, 2500, 3000 και 3500 θερμίδων, και καλύπτουν το μέσο όρο των πιθανών χρηστών της εφαρμογής. Σελ. 8/122

9 Εικόνα 8 (πρόταση για διατροφή 3000 θερμίδων (ελληνικά-άντρας)) Εικόνα 9 (πρόταση για διατροφή 2500 θερμίδων (αγγλικά-γυναίκα)) Εικόνα 10α (ιδανικές ημερήσιες θερμιδικές ανάγκες > 3828 (ελληνικά, άντρας)) Εικόνα 10β (ιδανικές ημερήσιες θερμιδικές ανάγκες > 3828 (αγγλικά, άντρας)) Σελ. 9/122

10 Το τελευταίο βήμα της εφαρμογής είναι η προβολή της διατροφής μίας εβδομάδας. Η πρώτη ημέρα διατροφής που εμφανίζεται είναι η Δευτέρα και ο χρήστης μπορεί, ακολουθώντας τα βελάκια πλοήγησης (συρόμενες εικόνες) να οδηγηθεί στην επόμενη κατά σειρά ημέρα. Στις Εικόνες 11a,11b έως 16a,16b παρουσιάζονται χαρακτηριστικά στιγμιότυπα του προγράμματος διατροφής για 2500 θερμίδες στα ελληνικά και στα αγγλικά. Εικόνα 11α (2500 θερμίδες - Δευτέρα (ελληνικά)) Εικόνα 11β (2500 θερμίδες - Δευτέρα (ελληνικά)- συνέχεια εικόνας) Σελ. 10/122

11 Εικόνα 12α (2500 θερμίδες - Τρίτη (αγγλικά)) Εικόνα 12β (2500 θερμίδες - Τρίτη (αγγλικά)- συνέχεια εικόνας) Εικόνα 13α (2500 θερμίδες - Κυριακή (ελληνικά)) Εικόνα 13β (2500 θερμίδες - Κυριακή (ελληνικά)- συνέχεια εικόνας) Εικόνα 14α (2500 θερμίδες - Δευτέρα (αγγλικά)) Εικόνα 14β (2500 θερμίδες - Δευτέρα (αγγλικά)- συνέχεια εικόνας) Σελ. 11/122

12 Εικόνα 15α (2500 θερμίδες - Τρίτη (αγγλικά)) Εικόνα 15β (2500 θερμίδες - Τρίτη (αγγλικά)- συνέχεια εικόνας) Εικόνα 16α (2500 θερμίδες - Κυριακή (αγγλικά)) Εικόνα 16β (2500 θερμίδες - Κυριακή (αγγλικά)- συνέχεια εικόνας) Σε καθεμία από τις σελίδες διατροφής ο χρήστης μπορεί να επιλέξει Αρχική Σελίδα για να ξεκινήσει πάλι την εφαρμογή από την επιλογή γλώσσας (Εικόνες 1,2). Σελ. 12/122

13 2. ΥΠΟΛΟΓΙΣΤΙΚΟΙ ΤΥΠΟΙ 2.1. Βασικός ρυθμός μεταβολισμού Οι τύποι που χρησιμοποιήθηκαν για τον υπολογισμό του βασικού ρυθμού μεταβολισμού είναι: (Harris-Benedict) Άντρες: ΜΗ=66.47+(13.75xB)+(5xY) (6.75xH) Γυναίκες: ΜΗ= (9.56xB)+(1.84xY) (4.67xH), όπου: Β-> Βάρος σε kg Υ-> Ύψος σε cm Η-> Ηλικία σε χρόνια 2.2. Ημερήσιες θερμιδικές ανάγκες Οι τύποι που χρησιμοποιήθηκαν για τον υπολογισμό των ημερήσιων θερμιδικών αναγκών είναι: ΗΕΑ (ΓΥΝΑΙΚΕΣ) = {354 (6.91xΗΛΙΚΙΑ[έτη])+ ΦΔx{(9.36xΒΑΡΟΣ[Κg])+(726xΥΨΟΣ[m]) Όπου ΦΔ (φυσική δραστηριότητα): = > ελάχιστη ΦΔ = > ελαφριά ΦΔ = > μέτρια ΦΔ = > έντονη ΦΔ ΗΕΑ (ΑΝΤΡΕΣ) = {662-(9.53*ΗΛΙΚΙΑ[έτη])+ΦΔ*{(15.91*ΒΑΡΟΣ[kg])+(539.6*ΥΨΟΣ[m]) Όπου ΦΔ (φυσική δραστηριότητα): = > ελάχιστη ΦΔ = > ελαφριά ΦΔ = > μέτρια ΦΔ = > έντονη ΦΔ 2.3. Κατάταξη σωματικού βάρους και ασθενούς Για την κατάταξη σωματικού βάρους και ασθενούς χρησιμοποιήθηκε ο δείκτης μάζας σώματος σύμφωνα με τα εξής στοιχεία: ΔΜΣ = βάρος(kg)/ύψος(m) 2 Βάσει του ΔΜΣ κάνουμε τη διάγνωση απλής παχυσαρκίας σύμφωνα με τον παρακάτω πίνακα: Σελ. 13/122

14 2.4. Ιδανικό βάρος Τέλος για τον υπολογισμό του ιδανικού βάρους χρησιμοποιήθηκαν τα εξής στοιχεία: Από το ΔΜΣ βλέπει ο κάθε χρήστης σε ποια κατάταξη ασθενούς ανήκει και χρησιμοποιείται ο ανάλογος τύπος για τον υπολογισμό του ιδανικού βάρους. Οι τύποι αυτοί παρουσιάζονται στον ακόλουθο πίνακα: Σελ. 14/122

15 3. ΕΡΓΑΛΕΙΑ Τα εργαλεία που χρησιμοποιήθηκαν για την ανάπτυξη της εφαρμογής είναι: 3.1. Eclipse (έκδοση Kepler) Το Eclipse Integrated Development Environment (IDE) είναι το προγραμματιστικό περιβάλλον όπου γράφτηκε ο κώδικας της εφαρμογής. Είναι απλά ένα γενικό περιβάλλον προγραμματισμού, όχι εξειδικευμένο για Android Development (Εικόνα 17). Εικόνα 17 (Eclipse) Android Development Tools: Τo Android Development Tools (ADT) είναι ένα plugin που προσθέτει λειτουργικότητα Android στο περιβάλλον Eclipse. Software Development Kit (SDK): To Android Software Development Kit (SDK) περιέχει όλα τα εργαλεία χαμηλού επιπέδου για να χτιστεί, να τρέξει αλλά και να τεσταριστεί κάθε Android εφαρμογή. Android Packages: Ο προγραμματιστής μπορεί να αναπτύσσει και να υποστηρίζει την εφαρμογή του πάνω από πολλαπλές εκδόσεις Android. Τα Packages προσθέτουνε αυτήν τη λειτουργικότητα στο βασικό SDK. Στη συγκεκριμένη εφαρμογή χρησιμοποιήθηκε ως ελάχιστη υποστηριζόμενη έκδοση Android η (Gingerbread) ενώ ως μέγιστη-στόχος η 4.3. Draw 9-patch: Το draw 9-patch είναι μια εφαρμογή που βρίσκεται στο Android SDK. Χρησιμοποιήθηκε για την επεξεργασία των backgrounds της εφαρμογής. Παρέχει τη Σελ. 15/122

16 δυνατότητα επεξεργασίας εικόνων με επαναπροσδιορισμό μεγέθους σημείων για όσον το δυνατόν μικρότερη παραμόρφωση (Εικόνες 18α, 18β). Εικόνα 18α (draw 9-patch-πριν την επεξεργασία) Εικόνα 18β (draw 9-patch-μετά την επεξεργασία) Σελ. 16/122

17 3.2. Inkscape To Inkscape είναι ένα πρόγραμμα επεξεργασίας εικόνας που χρησιμοποιήθηκε για τη διαμόρφωση των εικονιδίων: της εκκίνησης της εφαρμογής και της αρχικής οθόνης (σημαίες επιλογής γλώσσας) (Εικόνα 19). Εικόνα 19 (Inkscape) 3.3. SQLite Database Browser To SQLite database browser είναι ένα πρόγραμμα στο οποίο μπορεί να δει κανείς τι περιέχει η βάση δεδομένων που έχει φτιάξει μέσα στο πρόγραμμά του (Εικόνες 20α,20β). Σελ. 17/122

18 Εικόνα 20α (SQLite Browser ελληνική βάση δεδομένων) Εικόνα 20β (SQLite Browser αγγλική βάση δεδομένων) 3.4. Οι συσκευές Οι συσκευές (κινητά, Tablet) που χρησιμοποιήθηκαν ώστε να επαληθευτεί η ορθή λειτουργία της εφαρμογής είναι: Ονομασία Κωδικός Μοντέλου Λειτουργικό (Android) Samsung Galaxy Mini GT-S Samsung Galaxy Mini GT-I Samsung Galaxy Pocket Plus GT-S Samsung Galaxy S4 GT-I Samsung Note 8 (Tablet) GT-N Η γλώσσα προγραμματισμού που χρησιμοποιήθηκε είναι εξολοκλήρου Java με τις ιδιαιτερότητες του Android Development. Σελ. 18/122

19 4. ΚΩΔΙΚΑΣ ΤΗΣ ΕΦΑΡΜΟΓΗΣ Android Project: DailyCaloriesBodyFitness 4.1. Φάκελος src Αρχεία.java στο φάκελο src Αρχείο LanguageSelection.java package app.dailycalories; import android.os.bundle; import android.view.view; import android.app.activity; import android.content.intent; public class LanguageSelection extends Activity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview (R.layout.language_selection); public void onexit(view view){ finish(); public void ingreek(view view){ Intent entryform = new Intent(this, EntryForm.class); entryform.putextra("language", "greek"); startactivity(entryform); public void inenglish(view view){ Intent entryform = new Intent(this, EntryForm.class); entryform.putextra("language", "english"); startactivity(entryform); Αρχείο EntryForm.java package app.dailycalories; import android.os.bundle; import android.view.view; import android.widget.arrayadapter; import android.widget.button; import android.widget.edittext; import android.widget.spinner; import android.widget.textview; import android.widget.toast; import android.app.activity; import android.app.alertdialog; import android.content.intent; public class EntryForm extends Activity { Σελ. 19/122

20 private String lang_res; private TextView weighttextview; private EditText weightentryview; private TextView agetextview; private EditText ageentryview; private TextView sextextview; private TextView heighttextview; private EditText heightentryview; private TextView physactivtextview; private Button backbutton1,calcbutton; private Spinner spinnersex,spinnerphysactiv; private String protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.entry_form); Intent intent = getintent(); // intent = αναφορά(δείκτης) προς την Activity που κάλεσε την EntryForm Activity lang_res = intent.getstringextra("language"); weighttextview = (TextView)findViewById(R.id.weight_id); weightentryview = (EditText)findViewById(R.id.weight_entry_id); agetextview = (TextView)findViewById(R.id.age_id); ageentryview = (EditText)findViewById(R.id.age_entry_id); sextextview = (TextView)findViewById(R.id.sex_id); heighttextview = (TextView)findViewById(R.id.height_id); heightentryview = (EditText)findViewById(R.id.height_entry_id); physactivtextview = (TextView)findViewById(R.id.phys_activ_id); backbutton1 = (Button)findViewById(R.id.back_button1_id); calcbutton = (Button)findViewById(R.id.calc_button_id); setmenuoptions(); private void additemsonsexspinner(){ spinnersex = (Spinner)findViewById(R.id.sex_entry_id); ArrayAdapter<String> spinnersexarrayadapter; if(lang_res.equalsignorecase("greek")){ spinnersex.setprompt(getresources().getstring(r.string.gr_sex_prompt)); spinnersexarrayadapter = new ArrayAdapter<String>(this, android.r.layout.simple_spinner_dropdown_item, getresources().getstringarray(r.array.gr_sex_list)); else{ spinnersex.setprompt(getresources().getstring(r.string.en_sex_prompt)); spinnersexarrayadapter = new ArrayAdapter<String>(this, android.r.layout.simple_spinner_dropdown_item, getresources().getstringarray(r.array.en_sex_list)); spinnersex.setadapter(spinnersexarrayadapter); private void additemsonphysactivspinner(){ spinnerphysactiv = (Spinner)findViewById(R.id.phys_activ_entry_id); ArrayAdapter<String> spinnerphysactivarrayadapter; if(lang_res.equalsignorecase("greek")){ spinnerphysactiv.setprompt(getresources().getstring(r.string.gr_phys_activ_prompt)); spinnerphysactivarrayadapter = new ArrayAdapter<String>(this, android.r.layout.simple_spinner_dropdown_item, getresources().getstringarray(r.array.gr_phys_activ_list)); else{ spinnerphysactiv.setprompt(getresources().getstring(r.string.en_phys_activ_prompt)); spinnerphysactivarrayadapter = new ArrayAdapter<String>(this, android.r.layout.simple_spinner_dropdown_item, getresources().getstringarray(r.array.en_phys_activ_list)); Σελ. 20/122

21 spinnerphysactiv.setadapter(spinnerphysactivarrayadapter); private boolean checkweight(){ // έλεγχος τιμής βάρους weightentryview = (EditText)findViewById(R.id.weight_entry_id); int weight_int; weight_str = weightentryview.gettext().tostring(); Intent languagescreen = getintent(); String lang_res = languagescreen.getstringextra("language"); if(weight_str.matches("")){ if(lang_res.equalsignorecase("greek")){ Toast.makeText(this, getresources().getstring(r.string.gr_forgot_weight), Toast.LENGTH_SHORT).show(); else{ Toast.makeText(this, getresources().getstring(r.string.en_forgot_weight), Toast.LENGTH_SHORT).show(); return false; else{ weight_int = Integer.parseInt(weightEntryView.getText().toString()); if((weight_int<40) (weight_int>180)){ AlertDialog.Builder alertdialog = new AlertDialog.Builder(EntryForm.this); if(lang_res.equalsignorecase("greek")){ alertdialog.settitle(getresources().getstring(r.string.gr_wrong_weight_input_title)); alertdialog.setmessage(getresources().getstring(r.string.gr_wrong_weight_input_message)); else{ alertdialog.settitle(getresources().getstring(r.string.en_wrong_weight_input_title)); alertdialog.setmessage(getresources().getstring(r.string.en_wrong_weight_input_message)); alertdialog.setpositivebutton("ok", null); alertdialog.setnegativebutton("",null); alertdialog.show(); return false; else{ return true; private boolean checkage(){ // έλεγχος τιμής ηλικίας ageentryview = (EditText)findViewById(R.id.age_entry_id); int age_int; age_str = ageentryview.gettext().tostring(); Intent languagescreen = getintent(); String lang_res = languagescreen.getstringextra("language"); if(age_str.matches("")){ if(lang_res.equalsignorecase("greek")){ Toast.makeText(this, getresources().getstring(r.string.gr_forgot_age), Toast.LENGTH_SHORT).show(); else{ Toast.makeText(this, getresources().getstring(r.string.en_forgot_age), Toast.LENGTH_SHORT).show(); return false; Σελ. 21/122

22 else{ age_int = Integer.parseInt(ageEntryView.getText().toString()); if((age_int<18) (age_int>90)){ AlertDialog.Builder alertdialog = new AlertDialog.Builder(EntryForm.this); if(lang_res.equalsignorecase("greek")){ alertdialog.settitle(getresources().getstring(r.string.gr_wrong_age_input_title)); alertdialog.setmessage(getresources().getstring(r.string.gr_wrong_age_input_message)); else{ alertdialog.settitle(getresources().getstring(r.string.en_wrong_age_input_title)); alertdialog.setmessage(getresources().getstring(r.string.en_wrong_age_input_message)); alertdialog.setpositivebutton("ok", null); alertdialog.setnegativebutton("",null); alertdialog.show(); return false; else{ return true; private boolean checkheight(){ // έλεγχος τιμής ύψους heightentryview = (EditText)findViewById(R.id.height_entry_id); int height_int; height_str = heightentryview.gettext().tostring(); Intent languagescreen = getintent(); String lang_res = languagescreen.getstringextra("language"); if(height_str.matches("")){ if(lang_res.equalsignorecase("greek")){ Toast.makeText(this, getresources().getstring(r.string.gr_forgot_height), Toast.LENGTH_SHORT).show(); else{ Toast.makeText(this, getresources().getstring(r.string.en_forgot_height), Toast.LENGTH_SHORT).show(); return false; else{ height_int = Integer.parseInt(heightEntryView.getText().toString()); if((height_int<150) (height_int>200)){ AlertDialog.Builder alertdialog = new AlertDialog.Builder(EntryForm.this); if(lang_res.equalsignorecase("greek")){ alertdialog.settitle(getresources().getstring(r.string.gr_wrong_height_input_title)); alertdialog.setmessage(getresources().getstring(r.string.gr_wrong_height_input_message)); else{ alertdialog.settitle(getresources().getstring(r.string.en_wrong_height_input_title)); alertdialog.setmessage(getresources().getstring(r.string.en_wrong_height_input_message)); alertdialog.setpositivebutton("ok", null); alertdialog.setnegativebutton("",null); alertdialog.show(); return false; Σελ. 22/122

23 else{ return true; private void setmenuoptions(){ // προσθήκη μενού επιλογών για το χρήστη if(lang_res.equalsignorecase("greek")){ // επιλογή ελληνικής γλώσσας weighttextview.settext(getresources().getstring(r.string.gr_weight)); weightentryview.sethint(getresources().getstring(r.string.gr_put_weight)); agetextview.settext(getresources().getstring(r.string.gr_age)); ageentryview.sethint(getresources().getstring(r.string.gr_put_age)); sextextview.settext(getresources().getstring(r.string.gr_sex)); heighttextview.settext(getresources().getstring(r.string.gr_height)); heightentryview.sethint(getresources().getstring(r.string.gr_put_height)); physactivtextview.settext(getresources().getstring(r.string.gr_phys_activ)); else{ backbutton1.settext(getresources().getstring(r.string.gr_back)); calcbutton.settext(getresources().getstring(r.string.gr_calculate)); // επιλογή αγγλικής γλώσσας weighttextview.settext(getresources().getstring(r.string.en_weight)); weightentryview.sethint(getresources().getstring(r.string.en_put_weight)); agetextview.settext(getresources().getstring(r.string.en_age)); ageentryview.sethint(getresources().getstring(r.string.en_put_age)); sextextview.settext(getresources().getstring(r.string.en_sex)); heighttextview.settext(getresources().getstring(r.string.en_height)); heightentryview.sethint(getresources().getstring(r.string.en_put_height)); physactivtextview.settext(getresources().getstring(r.string.en_phys_activ)); backbutton1.settext(getresources().getstring(r.string.en_back)); calcbutton.settext(getresources().getstring(r.string.en_calculate)); additemsonsexspinner(); additemsonphysactivspinner(); public void onback(view view){ finish(); public void oncalculate(view view){ boolean entry_form_ok=false; String spinner_sex_res; String spinner_phys_activ_res; entry_form_ok = (checkweight() && checkage() && checkheight()); if(entry_form_ok==true){ Intent resultscreen = new Intent(this,ResultScreen.class); if(lang_res.equalsignorecase("greek")){ resultscreen.putextra("language", "greek"); else{ resultscreen.putextra("language", "english"); spinner_sex_res = spinnersex.getselecteditem().tostring(); resultscreen.putextra("sex",spinner_sex_res); spinner_phys_activ_res = spinnerphysactiv.getselecteditem().tostring(); resultscreen.putextra("physical_activity",spinner_phys_activ_res); resultscreen.putextra("weight",weight_str); resultscreen.putextra("age",age_str); resultscreen.putextra("height",height_str); Σελ. 23/122

24 startactivity(resultscreen); Αρχείο ResultScreen.java package app.dailycalories; import android.os.bundle; import android.util.displaymetrics; import android.view.view; import android.view.viewgroup; import android.view.viewgroup.layoutparams; import android.widget.button; import android.widget.relativelayout; import android.widget.scrollview; import android.widget.textview; import android.app.activity; import android.content.intent; import android.content.res.configuration; public class ResultScreen extends Activity { private String lang_res,sex_res,phys_activ_res,weight_res,age_res,height_res; private int sex_sel=0; // 0->Άντρας(προεπιλογή), 1-> Γυναίκα private int phys_activ_sel=0; //0->Ελάχιστη(προεπιλογή), 1->Ελαφριά, 2->Μέτρια, 3->Έντονη private ScrollView scrollview; private TextView resulttextview; private TextView bmrresulttextview,bmrtextview; private TextView dailycaloriestextview,dailycaloriesresulttextview; private TextView classofbodyweighttextview,classofbodyweightresulttextview; private TextView patientclasstextview,patientclassresulttextview; private TextView idealweighttextview,idealweightresulttextview; private TextView visitdieticianview,suggesteddietview; private BodyFormula body; private Button backbutton2,idealcaloriesbuttonview; int protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.result_screen); Intent intent = getintent(); lang_res = intent.getstringextra("language"); sex_res=intent.getstringextra("sex"); phys_activ_res=intent.getstringextra("physical_activity"); weight_res=intent.getstringextra("weight"); age_res=intent.getstringextra("age"); height_res=intent.getstringextra("height"); scrollview = (ScrollView)findViewById(R.id.scroll_id); resulttextview = (TextView)findViewById(R.id.results_id); bmrtextview = (TextView)findViewById(R.id.bmr_id); bmrresulttextview = (TextView)findViewById(R.id.bmr_res_id); dailycaloriestextview = (TextView)findViewById(R.id.daily_cal_id); dailycaloriesresulttextview = (TextView)findViewById(R.id.daily_cal_res_id); classofbodyweighttextview = (TextView)findViewById(R.id.class_of_body_weight_id); classofbodyweightresulttextview = (TextView)findViewById(R.id.class_of_body_weight_res_id); patientclasstextview = (TextView)findViewById(R.id.patient_class_id); patientclassresulttextview = (TextView)findViewById(R.id.patient_class_res_id); idealweighttextview = (TextView)findViewById(R.id.ideal_weight_id); idealweightresulttextview = (TextView)findViewById(R.id.ideal_weight_res_id); backbutton2 = (Button)findViewById(R.id.back_button2_id); idealcaloriesbuttonview = (Button)findViewById(R.id.ideal_calories_button_id); Σελ. 24/122

25 visitdieticianview = (TextView)findViewById(R.id.visit_message_id); suggesteddietview = (TextView)findViewById(R.id.suggested_message_id); setbackgroundcolorandsex(); // επιλογή του background της οθόνης και των χρωμάτων των κατηγοριών βάση του φύλου του χρήστη setphysicalactivity(); // επιλογή επιπέδου φυσικής δραστηριότητας body = new BodyFormula(sex_sel,phys_activ_sel,weight_res,age_res,height_res,lang_res); setbodyfitnesscolors(); setresults(); private void setbackgroundcolorandsex(){ if((sex_res.equalsignorecase(getresources().getstring(r.string.gr_sex_man))) (sex_res.equalsignorecase(getresources().getstring(r.string.en_sex_man)))){ scrollview.setbackgroundresource(r.drawable.man_screen3); scrollview.setpadding(0, 0, 0, 0); resulttextview.settextcolor(getresources().getcolor(r.color.blue)); bmrtextview.settextcolor(getresources().getcolor(r.color.blue)); dailycaloriestextview.settextcolor(getresources().getcolor(r.color.blue)); classofbodyweighttextview.settextcolor(getresources().getcolor(r.color.blue)); else{ patientclasstextview.settextcolor(getresources().getcolor(r.color.blue)); idealweighttextview.settextcolor(getresources().getcolor(r.color.blue)); scrollview.setbackgroundresource(r.drawable.woman_screen3); scrollview.setpadding(0, 0, 0, 0); resulttextview.settextcolor(getresources().getcolor(r.color.purple)); bmrtextview.settextcolor(getresources().getcolor(r.color.purple)); dailycaloriestextview.settextcolor(getresources().getcolor(r.color.purple)); classofbodyweighttextview.settextcolor(getresources().getcolor(r.color.purple)); patientclasstextview.settextcolor(getresources().getcolor(r.color.purple)); idealweighttextview.settextcolor(getresources().getcolor(r.color.purple)); sex_sel=1; // Γυναίκα private void setphysicalactivity(){ // Σωματική Δραστηριότητα (phys_activ_sel==0 => Ελάχιστη Δραστηριότητα (default τιμή)) if((phys_activ_res.equalsignorecase(getresources().getstring(r.string.gr_phys_activ_li))) (phys_activ_res.equalsignorecase(getresources().getstring(r.string.en_phys_activ_li)))){ phys_activ_sel=1; // Ελαφριά else if((phys_activ_res.equalsignorecase(getresources().getstring(r.string.gr_phys_activ_mo))) (phys_activ_res.equalsignorecase(getresources().getstring(r.string.en_phys_activ_mo)))){ phys_activ_sel=2; // Μέτρια else if((phys_activ_res.equalsignorecase(getresources().getstring(r.string.gr_phys_activ_in))) (phys_activ_res.equalsignorecase(getresources().getstring(r.string.en_phys_activ_in)))){ phys_activ_sel=3; // Έντονη private void setbodyfitnesscolors(){ if((body.get_class_body_weight().equalsignorecase("ελλειποβαρές")) (body.get_class_body_weight().equalsignorecase("underweight"))){ classofbodyweightresulttextview.settextcolor(getresources().getcolor(r.color.yellow)); patientclassresulttextview.settextcolor(getresources().getcolor(r.color.yellow)); else if((body.get_class_body_weight().equalsignorecase("φυσιολογική Κατάσταση ΣΒ")) (body.get_class_body_weight().equalsignorecase("normal State Of Body Weight"))){ classofbodyweightresulttextview.settextcolor(getresources().getcolor(r.color.green)); patientclassresulttextview.settextcolor(getresources().getcolor(r.color.green)); else if((body.get_class_body_weight().equalsignorecase("υπερβάλλον ΣΒ")) (body.get_class_body_weight().equalsignorecase("excess Body Weight"))){ Σελ. 25/122

26 classofbodyweightresulttextview.settextcolor(getresources().getcolor(r.color.orange)); patientclassresulttextview.settextcolor(getresources().getcolor(r.color.orange)); else{ // Παχυσαρκία/Νοσογόνος Παχυσαρκία classofbodyweightresulttextview.settextcolor(getresources().getcolor(r.color.red)); patientclassresulttextview.settextcolor(getresources().getcolor(r.color.red)); private void setresults(){ if(lang_res.equalsignorecase("greek")){ resulttextview.settext(getresources().getstring(r.string.gr_results)); bmrtextview.settext(getresources().getstring(r.string.gr_bmr)); bmrresulttextview.settext(body.get_bmr()+" θερμίδες"); dailycaloriestextview.settext(getresources().getstring(r.string.gr_daily_cal_needs)); dailycaloriesresulttextview.settext(body.get_daily_calories()+" θερμίδες"); classofbodyweighttextview.settext(getresources().getstring(r.string.gr_class_of_body)); classofbodyweightresulttextview.settext(body.get_class_body_weight()); patientclasstextview.settext(getresources().getstring(r.string.gr_patient_class)); patientclassresulttextview.settext(body.get_class_patient()); idealweighttextview.settext(getresources().getstring(r.string.gr_ideal_weight)); idealweightresulttextview.settext(body.get_ideal_weight()+" κιλά"); backbutton2.settext(getresources().getstring(r.string.gr_back)); visitdieticianview.settext(getresources().getstring(r.string.gr_exceed_calories_message)); suggesteddietview.settext(getresources().getstring(r.string.gr_suggested_diet)); else{ resulttextview.settext(getresources().getstring(r.string.en_results)); bmrtextview.settext(getresources().getstring(r.string.en_bmr)); bmrresulttextview.settext(body.get_bmr()+" kcal"); dailycaloriestextview.settext(getresources().getstring(r.string.en_daily_cal_needs)); dailycaloriesresulttextview.settext(body.get_daily_calories()+" kcal"); classofbodyweighttextview.settext(getresources().getstring(r.string.en_class_of_body)); classofbodyweightresulttextview.settext(body.get_class_body_weight()); patientclasstextview.settext(getresources().getstring(r.string.en_patient_class)); patientclassresulttextview.settext(body.get_class_patient()); idealweighttextview.settext(getresources().getstring(r.string.en_ideal_weight)); idealweightresulttextview.settext(body.get_ideal_weight()+" kg"); backbutton2.settext(getresources().getstring(r.string.en_back)); visitdieticianview.settext(getresources().getstring(r.string.en_exceed_calories_message)); suggesteddietview.settext(getresources().getstring(r.string.en_suggested_diet)); // relative_layout RelativeLayout.LayoutParams p_back = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONT ENT); RelativeLayout.LayoutParams p_calc = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONT ENT); RelativeLayout.LayoutParams p_text = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONT ENT); // Παράμετροι για έλεγχο μεγέθους οθόνης κινητού και tablet DisplayMetrics metrics = new DisplayMetrics(); getwindowmanager().getdefaultdisplay().getmetrics(metrics); int widthpixels = metrics.widthpixels; int heightpixels = metrics.heightpixels; float scalefactor = metrics.density; float widthdp = widthpixels / scalefactor; float heightdp = heightpixels/scalefactor; Σελ. 26/122

27 float smallestwidth = Math.min(widthDp, heightdp); int ideal_cal = Integer.parseInt(body.get_ideal_daily_calories()); // large screens default p_back.height=layoutparams.wrap_content; p_back.width=layoutparams.wrap_content; p_back.topmargin=60; p_text.height=layoutparams.wrap_content; p_text.width=layoutparams.wrap_content; p_text.topmargin=60; if(((getresources().getconfiguration().screenlayout // small screen & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL)){ p_text.topmargin = p_text.topmargin-20; p_back.topmargin = p_back.topmargin-20; else if(((getresources().getconfiguration().screenlayout // normal screen & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL)){ p_back.topmargin = p_back.topmargin-26; if(smallestwidth>=720){ // 10" Tablet p_text.topmargin = p_text.topmargin+30; p_back.topmargin = p_back.topmargin+30; else if(smallestwidth>=600){ // 7" Tablet p_text.topmargin = p_text.topmargin+10; p_back.topmargin = p_back.topmargin+10; p_text.addrule(relativelayout.below,r.id.ideal_weight_id); p_text.addrule(relativelayout.align_left,r.id.bmr_id); p_back.addrule(relativelayout.center_in_parent,1); if(ideal_cal>3828){ // επιλογή exceed_diet message για εμφάνιση visitdieticianview.setlayoutparams(p_text); visitdieticianview.setvisibility(0); p_back.addrule(relativelayout.below,r.id.visit_message_id); else{ επιλογής δίατιας για μια μέρα // επιλογή suggested_diet message για εμφάνιση + κουμπί suggesteddietview.setlayoutparams(p_text); suggesteddietview.setvisibility(0); p_calc.height=layoutparams.wrap_content; p_calc.width=layoutparams.wrap_content; p_calc.addrule(relativelayout.below,r.id.suggested_message_id); p_calc.addrule(relativelayout.center_in_parent,1); p_calc.topmargin=10; if(smallestwidth>=720){ // 10" Tablet p_calc.topmargin = p_calc.topmargin+30; else if(smallestwidth>=600){ // 7" Tablet p_calc.topmargin = p_calc.topmargin+10; idealcaloriesbuttonview.setlayoutparams(p_calc); idealcaloriesbuttonview.setvisibility(0); p_back.addrule(relativelayout.below,r.id.ideal_calories_button_id); if(ideal_cal<1400){ // δίαιτα 1300 θερμίδων diet_calories=1300; else if((ideal_cal>=1400)&&(ideal_cal<1650)){ // δίαιτα 1500 θερμίδων diet_calories=1500; Σελ. 27/122

28 else if((ideal_cal>=1650)&&(ideal_cal<2150)){ // δίαιτα 1800 θερμίδων diet_calories=1800; else if((ideal_cal>=2150)&&(ideal_cal<2750)){ // δίαιτα 2500 θερμίδων diet_calories=2500; else if((ideal_cal>=2750)&&(ideal_cal<3250)){ // δίαιτα 2500 θερμίδων diet_calories=3000; else if((ideal_cal>=3250)&&(ideal_cal<=3828)){ // δίαιτα 3500 θερμίδων diet_calories=3500; if(lang_res.equalsignorecase("greek")){ idealcaloriesbuttonview.settext(integer.tostring(diet_calories) +" θερμίδες"); else{ idealcaloriesbuttonview.settext(integer.tostring(diet_calories) +" kcal"); backbutton2.setlayoutparams(p_back); backbutton2.setvisibility(0); public void oncaloriesselect(view view){ Intent dietscreen = new Intent(this,Diet.class); String diet_calories_str; if(lang_res.equalsignorecase("greek")){ dietscreen.putextra("language", "greek"); else{ dietscreen.putextra("language", "english"); diet_calories_str = Integer.toString(diet_calories); dietscreen.putextra("diet_calories",diet_calories_str); startactivity(dietscreen); public void onback(view view){ finish(); Αρχείο BodyFormula.java package app.dailycalories; public class BodyFormula { private int sex; // 0->"man/Άντρας", 1->"woman/Γυναίκα" private int physical_activity; // 0->"Minimum/Ελάχιστη", 1->"Light/Ελαφριά", 2->"Moderate/Μέτρια", 3- >"Vigorous/Έντονη" private int weight; //in kg private int height_cm; //in cm private int age; //in years private double height_m; //in m private double bmr; // ακριβής βασικός ρυθμός μεταβολισμού(bmr) private int bmr_int; // στρογγυλοποιημένος βασικός ρυθμός μεταβολισμού(bmr) private double daily_calories; // ακριβής αριθμός ημερήσιων θερμίδων private int daily_calories_int; // στρογγυλοποιημένος αριθμός ημερήσιων θερμίδων private double ideal_daily_calories; // ακριβής αριθμός ιδανικών ημερήσιων θερμίδων Σελ. 28/122

29 private int ideal_daily_calories_int; // στρογγυλοποιημένος αριθμός ιδανικών ημερήσιων θερμίδων private double bmi; // body mass index (δείκτης μάζας σώματος) private String language; // "greek" or "english" private String class_body_weight; // Κατάταξη Σωματικού Βάρους private String class_patient; // Κατάταξη Ασθενούς private double ideal_weight; // ιδανικό βάρος private int ideal_weight_int; // στρογγυλοποιημένο ιδανικό βάρος public BodyFormula(int sex, int physical_activity, String weight, String age, String height, String language){ this.sex=sex; this.physical_activity=physical_activity; this.weight=integer.valueof(weight); this.age=integer.valueof(age); this.height_cm= Integer.valueOf(height); this.height_m = (double)this.height_cm/100; this.language=language; class_by_bmi_calc(); // κλήση συνάρτησης για τον υπολογισμό Κατάταξης Σωματικού Βάρους και Κατάταξης Ασθενούς ideal_weight_calc(); // κλήση συνάρτησης για τον υπολογισμό Ιδανικού Βάρους private double bmr_calc(){ if(sex==0){ // Άντρας return(66.47+(13.75*weight)+(5*height_cm)-(6.75*age)); else{ // Γυναίκα return( (9.56*weight)+(1.84*height_cm)-(4.67*age)); private double daily_calories_needed_calc(int weight){ double phys_value=0.0; if(sex==0){ // Άντρας switch(physical_activity){ case 0: phys_value=1.00; break; case 1: phys_value=1.11; break; case 2: phys_value=1.25; break; case 3: phys_value=1.48; break; return((662-(9.53*age))+phys_value*((15.91*weight)+(539.6*height_m))); else{ // Γυναίκα switch(physical_activity){ case 0: phys_value=1.00; break; case 1: phys_value=1.12; break; case 2: phys_value=1.27; break; case 3: phys_value=1.45; break; return((354-(6.91*age))+phys_value*((9.36*weight)+(726*height_m))); private double bmi_calc(){ return((double)weight/((height_m*height_m))); private void class_by_bmi_calc(){ // υπολογισμός Κατάταξης Σωματικού Βάρους και Κατάταξης Ασθενούς bmi=bmi_calc(); if(language.equalsignorecase("greek")){ // στα ελληνικά if(bmi<18.5){ class_body_weight = "Ελλειποβαρές"; class_patient = "Λιποβαρής"; else if((bmi>=18.5)&&(bmi<25.0)){ class_body_weight = "Φυσιολογική Κατάσταση ΣΒ"; class_patient = "Νορμοβαρής"; else if((bmi>=25.0)&&(bmi<29.9)){ Σελ. 29/122

30 class_body_weight = "Υπερβάλλον ΣΒ"; class_patient = "Υπέρβαρος"; else if((bmi>=30.0)&&(bmi<40)){ class_body_weight = "Παχυσαρκία"; class_patient = "Παχύσαρκος"; else{ class_body_weight = "Νοσογόνος Παχυσαρκία"; class_patient = "Παχύσαρκος"; else{ // στα αγγλικά if(bmi<18.5){ class_body_weight = "Underweight"; class_patient = "Underweight"; else if((bmi>=18.5)&&(bmi<25.0)){ class_body_weight = "Normal State Of Body Weight"; class_patient = "Normal Weight"; else if((bmi>=25.0)&&(bmi<29.9)){ class_body_weight = "Excess Body Weight"; class_patient = "Overweight"; else if((bmi>=30.0)&&(bmi<40)){ class_body_weight = "Obesity"; class_patient = "Obese"; else{ class_body_weight = "Morbid Obesity"; class_patient = "Obese"; private void ideal_weight_calc(){ if((class_patient.equalsignorecase("νορμοβαρής")) (class_patient.equalsignorecase("normal weight"))){ ideal_weight=21.7*(height_m*height_m); else if((class_patient.equalsignorecase("λιποβαρής")) (class_patient.equalsignorecase("underweight"))){ ideal_weight=18.5*(height_m*height_m); else{ // Παχύσαρκος ideal_weight=24.9*(height_m*height_m); ideal_weight_int=round_number(ideal_weight); private int round_number(double number){ int round_number; double rest; round_number = (int)number; rest = number-round_number; if(rest>=0.5){ round_number++; return(round_number); // getters() public String get_bmr(){ // επιστροφή Βασικού Ρυθμού Μεταβολισμού bmr=bmr_calc(); bmr_int=round_number(bmr); return(integer.tostring(bmr_int)); Σελ. 30/122

31 public String get_daily_calories(){ // επιστροφή Ημερήσιων Θερμιδικών Αναγκών daily_calories=daily_calories_needed_calc(weight); daily_calories_int=round_number(daily_calories); return(integer.tostring(daily_calories_int)); public String get_ideal_daily_calories(){ // επιστροφή ιδανικών Ημερήσιων Θερμιδικών Αναγκών ideal_daily_calories=daily_calories_needed_calc(ideal_weight_int); ideal_daily_calories_int=round_number(ideal_daily_calories); return(integer.tostring(ideal_daily_calories_int)); public String get_class_body_weight(){ // επιστροφή Κατάταξης Σωματικού Βάρους return(class_body_weight); public String get_class_patient(){ // επιστροφή Κατάταξης Ασθενούς return(class_patient); public String get_ideal_weight(){ // επιστροφή Ιδανικού Βάρους return(integer.tostring(ideal_weight_int)); Αρχείο Diet.java package app.dailycalories; import android.os.bundle; import android.support.v4.view.pageradapter; import android.support.v4.view.viewpager; import android.support.v4.view.viewpager.onpagechangelistener; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.button; import android.widget.textview; import android.app.activity; import android.content.context; import android.content.intent; import android.database.cursor; public class Diet extends Activity { private String lang_res,diet_calories_str; private int diet_calories,day_count; private TextView diettitletextview; private TextView daytextview; private TextView breakfasttitletextview,breakfastresulttextview; private TextView brunchtitletextview,brunchresulttextview; private TextView lunchtitletextview,lunchresulttextview; private TextView afternoontitletextview,afternoonresulttextview; private TextView dinnertitletextview,dinnerresulttextview; private TextView beforesleeptitletextview,beforesleepresulttextview; private TextView rightarrowview,leftarrowview; private Button backbutton3,returnbutton; private DietDatabaseHelper databasehelper; private String q; // q=query private Cursor cursor; private String[] day,breakfast,brunch,lunch,afternoon,dinner,before_sleep; private LayoutInflater inflater; //Used to create individual pages private ViewPager vd; //Reference to class to swipe views (view protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.diet); Σελ. 31/122

32 //get an inflater to be used to create single pages inflater = (LayoutInflater) getsystemservice(context.layout_inflater_service); rightarrowview = (TextView)findViewById(R.id.arrow_right_id); leftarrowview = (TextView)findViewById(R.id.arrow_left_id); databasehelper = new DietDatabaseHelper(this); Intent intent = getintent(); lang_res = intent.getstringextra("language"); diet_calories_str = intent.getstringextra("diet_calories"); diet_calories = Integer.valueOf(diet_calories_str); ******/ /****** Προσπέλαση κατάλληλου πίνακα για ανάκτηση δεδομένων εβδομαδιαίου προγράμματος if(lang_res.equalsignorecase("greek")){ q = "SELECT * FROM GreekDiet WHERE _calories = " + diet_calories; else{ q = "SELECT * FROM EnglishDiet WHERE _calories = " + diet_calories; cursor = databasehelper.getspecificdiet(q); day = new String[7]; breakfast = new String[7]; brunch = new String[7]; lunch = new String[7]; afternoon = new String[7]; dinner = new String[7]; before_sleep = new String[7]; cursor.movetofirst(); for(day_count=0; day_count<7; day_count++){// Εισαγωγή εβδομαδιαίας διατροφής σε μεταβλητές με τη σωστή σειρά if(lang_res.equalsignorecase("greek")){ switch(day_count){ case 0: { day[0] = cursor.getstring(1); // Δευτέρα -> θέση 0 breakfast[0] = cursor.getstring(2); brunch[0] = cursor.getstring(3); lunch[0] = cursor.getstring(4); afternoon[0] = cursor.getstring(5); dinner[0] = cursor.getstring(6); before_sleep[0] = cursor.getstring(7); break; case 1: { day[6] = cursor.getstring(1); // Κυριακή -> θέση 6 breakfast[6] = cursor.getstring(2); brunch[6] = cursor.getstring(3); lunch[6] = cursor.getstring(4); afternoon[6] = cursor.getstring(5); dinner[6] = cursor.getstring(6); before_sleep[6] = cursor.getstring(7); break; case 2: { day[3] = cursor.getstring(1); // Πέμπτη -> θέση 3 breakfast[3] = cursor.getstring(2); brunch[3] = cursor.getstring(3); lunch[3] = cursor.getstring(4); afternoon[3] = cursor.getstring(5); dinner[3] = cursor.getstring(6); before_sleep[3] = cursor.getstring(7); break; case 3: { day[4] = cursor.getstring(1); // Παρασκευή -> θέση 4 breakfast[4] = cursor.getstring(2); Σελ. 32/122

33 brunch[4] = cursor.getstring(3); lunch[4] = cursor.getstring(4); afternoon[4] = cursor.getstring(5); dinner[4] = cursor.getstring(6); before_sleep[4] = cursor.getstring(7); break; case 4: { day[5] = cursor.getstring(1); // Σάββατο -> θέση 5 breakfast[5] = cursor.getstring(2); brunch[5] = cursor.getstring(3); lunch[5] = cursor.getstring(4); afternoon[5] = cursor.getstring(5); dinner[5] = cursor.getstring(6); before_sleep[5] = cursor.getstring(7); break; case 5: { day[2] = cursor.getstring(1); // Τετάρτη -> θέση 2 breakfast[2] = cursor.getstring(2); brunch[2] = cursor.getstring(3); lunch[2] = cursor.getstring(4); afternoon[2] = cursor.getstring(5); dinner[2] = cursor.getstring(6); before_sleep[2] = cursor.getstring(7); break; case 6: { day[1] = cursor.getstring(1); // Τρίτη -> θέση 1 breakfast[1] = cursor.getstring(2); brunch[1] = cursor.getstring(3); lunch[1] = cursor.getstring(4); afternoon[1] = cursor.getstring(5); dinner[1] = cursor.getstring(6); before_sleep[1] = cursor.getstring(7); break; else{ switch(day_count){ case 0: { day[4] = cursor.getstring(1); // Friday -> θέση 4 breakfast[4] = cursor.getstring(2); brunch[4] = cursor.getstring(3); lunch[4] = cursor.getstring(4); afternoon[4] = cursor.getstring(5); dinner[4] = cursor.getstring(6); before_sleep[4] = cursor.getstring(7); break; case 1: { day[0] = cursor.getstring(1); // Monday -> θέση 0 breakfast[0] = cursor.getstring(2); brunch[0] = cursor.getstring(3); lunch[0] = cursor.getstring(4); afternoon[0] = cursor.getstring(5); dinner[0] = cursor.getstring(6); before_sleep[0] = cursor.getstring(7); break; case 2: { day[5] = cursor.getstring(1); // Saturday -> θέση 5 breakfast[5] = cursor.getstring(2); brunch[5] = cursor.getstring(3); lunch[5] = cursor.getstring(4); afternoon[5] = cursor.getstring(5); dinner[5] = cursor.getstring(6); before_sleep[5] = cursor.getstring(7); break; case 3: { day[6] = cursor.getstring(1); // Sunday -> θέση 6 breakfast[6] = cursor.getstring(2); brunch[6] = cursor.getstring(3); lunch[6] = cursor.getstring(4); Σελ. 33/122

34 afternoon[6] = cursor.getstring(5); dinner[6] = cursor.getstring(6); before_sleep[6] = cursor.getstring(7); break; case 4: { day[3] = cursor.getstring(1); // Thursday -> θέση 3 breakfast[3] = cursor.getstring(2); brunch[3] = cursor.getstring(3); lunch[3] = cursor.getstring(4); afternoon[3] = cursor.getstring(5); dinner[3] = cursor.getstring(6); before_sleep[3] = cursor.getstring(7); break; case 5: { day[1] = cursor.getstring(1); // Tuesday -> θέση 1 breakfast[1] = cursor.getstring(2); brunch[1] = cursor.getstring(3); lunch[1] = cursor.getstring(4); afternoon[1] = cursor.getstring(5); dinner[1] = cursor.getstring(6); before_sleep[1] = cursor.getstring(7); break; case 6: { day[2] = cursor.getstring(1); // Wednesday -> θέση 2 breakfast[2] = cursor.getstring(2); brunch[2] = cursor.getstring(3); lunch[2] = cursor.getstring(4); afternoon[2] = cursor.getstring(5); dinner[2] = cursor.getstring(6); before_sleep[2] = cursor.getstring(7); break; cursor.movetonext(); //Reference ViewPager defined in activity vd=(viewpager)findviewbyid(r.id.viewday); //set the adapter that will create the individual pages vd.setadapter(new MyPagesAdapter()); vd.setonpagechangelistener(new OnPageChangeListener() public void onpagescrollstatechanged(int arg0) public void onpagescrolled(int arg0, float arg1, int arg2) public void onpageselected(int currentpage) { if(currentpage==0){ // first page -> only right arrow appears rightarrowview.setvisibility(view.visible); leftarrowview.setvisibility(view.invisible); else if(currentpage==6){ // last page -> only left arrow appears rightarrowview.setvisibility(view.invisible); leftarrowview.setvisibility(view.visible); else{ // intermediate page -> both right and left arrow appear rightarrowview.setvisibility(view.visible); leftarrowview.setvisibility(view.visible); ); if(!cursor.isclosed()){ cursor.close(); databasehelper.close(); Σελ. 34/122

35 //Implement PagerAdapter Class to handle individual page creation class MyPagesAdapter extends PagerAdapter public int getcount() { return 7; // number of swiped pages //Create the given page (indicated by public Object instantiateitem(viewgroup container, int position) { View day = inflater.inflate(r.layout.day, null); diettitletextview = (TextView)day.findViewById(R.id.diet_title_id); daytextview = (TextView)day.findViewById(R.id.day_id); breakfasttitletextview = (TextView)day.findViewById(R.id.breakfast_title_id); breakfastresulttextview = (TextView)day.findViewById(R.id.breakfast_result_id); brunchtitletextview = (TextView)day.findViewById(R.id.brunch_title_id); brunchresulttextview = (TextView)day.findViewById(R.id.brunch_result_id); lunchtitletextview = (TextView)day.findViewById(R.id.lunch_title_id); lunchresulttextview = (TextView)day.findViewById(R.id.lunch_result_id); afternoontitletextview = (TextView)day.findViewById(R.id.afternoon_title_id); afternoonresulttextview = (TextView)day.findViewById(R.id.afternoon_result_id); dinnertitletextview = (TextView)day.findViewById(R.id.dinner_title_id); dinnerresulttextview = (TextView)day.findViewById(R.id.dinner_result_id); beforesleeptitletextview = (TextView)day.findViewById(R.id.before_sleep_title_id); beforesleepresulttextview = (TextView)day.findViewById(R.id.before_sleep_result_id); backbutton3 = (Button)day.findViewById(R.id.back_button3_id); returnbutton = (Button)day.findViewById(R.id.return_home_page_id); setstringsdiet(position); //Add the page to the front of the queue ((ViewPager) container).addview(day, 0); return public boolean isviewfromobject(view arg0, Object arg1) { //See if object from instantiateitem is related to the given view //required by API return public void destroyitem(viewgroup container, int position, Object object) { ((ViewPager) container).removeview((view) object); object=null; private void setstringsdiet(int position){ if(lang_res.equalsignorecase("greek")){ diettitletextview.settext("δίαιτα " + diet_calories_str + " θερμίδων"); daytextview.settext(day[position]); breakfasttitletextview.settext(getresources().getstring(r.string.gr_breakfast)); breakfastresulttextview.settext(breakfast[position]); brunchtitletextview.settext(getresources().getstring(r.string.gr_brunch)); brunchresulttextview.settext(brunch[position]); lunchtitletextview.settext(getresources().getstring(r.string.gr_lunch)); lunchresulttextview.settext(lunch[position]); afternoontitletextview.settext(getresources().getstring(r.string.gr_afternoon)); afternoonresulttextview.settext(afternoon[position]); dinnertitletextview.settext(getresources().getstring(r.string.gr_dinner)); dinnerresulttextview.settext(dinner[position]); beforesleeptitletextview.settext(getresources().getstring(r.string.gr_before_sleep)); beforesleepresulttextview.settext(before_sleep[position]); backbutton3.settext(getresources().getstring(r.string.gr_back)); returnbutton.settext(getresources().getstring(r.string.gr_return_home_message)); Σελ. 35/122

ANDROID Προγραμματισμός Εφαρμογών

ANDROID Προγραμματισμός Εφαρμογών ANDROID Προγραμματισμός Εφαρμογών Παναγιώτης Κρητιώτης ΑΜ 1607 Περιεχόμενα Εισαγωγή Βασικά Στοιχεία Χαρακτηριστικά Αρχιτεκτονική Εργαλεία Προγραμματισμού Eclipse IDE Android SDK - ADT Plugin Προσομοιωτής

Διαβάστε περισσότερα

ΠΑΡΑΡΤΗΜΑ ΓΡΕΒΕΝΩΝ ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΣΙΑΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΡΑΡΤΗΜΑ ΓΡΕΒΕΝΩΝ ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΣΙΑΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ ΓΡΕΒΕΝΩΝ ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΣΙΑΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Θέμα : ΥΛΟΠΟΙΗΣΗ ΞΕΝΟΓΛΩΣΣΗΣ ΕΚΠΑΙΔΕΥΤΙΚΗΣ ΕΦΑΡΜΟΓΗΣ ΣΕ ΠΛΑΤΦΟΡΜΑ ANDROID Όνοματεπώνυμο : Στέκας Ιγνάτιος Επιβλέπων : Σωτήριος Κοντογιάννης Ημερομηνία

Διαβάστε περισσότερα

Εφαρμογή Υπολογισμού Φιλοδωρήματος : προσθήκη λειτουργικότητας

Εφαρμογή Υπολογισμού Φιλοδωρήματος : προσθήκη λειτουργικότητας Εφαρμογή Υπολογισμού Φιλοδωρήματος : προσθήκη λειτουργικότητας Όταν δημιουργούμε μία εφαρμογή package com.example.expert.mytipcalculator; import android.support.v7.app.appcompatactivity; import android.os.bundle;

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Θέμα: «Ανάπτυξη εφαρμογής για μετρητή θερμίδων σε Android» «Development of a calories counter application in android»

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Θέμα: «Ανάπτυξη εφαρμογής για μετρητή θερμίδων σε Android» «Development of a calories counter application in android» ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ 2014-2015 Θέμα: «Ανάπτυξη εφαρμογής για μετρητή θερμίδων σε Android» «Development of a calories counter application in android» Αποστολάκης

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 Εκτέλεση μεθόδου του αντικειμένου μιας κλάσης: 1) Δημιουργία αντικειμένου (στιγμιότυπου) της κλάσης: = new ( ); 2) Κλήση μεθόδου της κλάσης (στην

Διαβάστε περισσότερα

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με κοινά χαρακτηριστικά και κοινή συμπεριφορά. Ένα καλούπι/πρότυπο

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΑΤΙΣΜΟΣ Α (C++) ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΤΩΝ Δρ. Νικόλαος Ζ. Ζάχαρης

ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΑΤΙΣΜΟΣ Α (C++) ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΤΩΝ Δρ. Νικόλαος Ζ. Ζάχαρης ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΑΤΙΣΜΟΣ Α (C++) ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΤΩΝ Δρ. Νικόλαος Ζ. Ζάχαρης 1) Να δημιουργήσετε ένα νέο project όπου θα πληκτρολογείται 2 ακεραίους αριθμούς και θα υπολογίζεται αν και οι δύο αριθμοί ανήκουν

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

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

ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΣΟΥΛΤΑΝΟΓΛΟΥ ΑΘΑΝΑΣΙΟΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΣΟΥΛΤΑΝΟΓΛΟΥ ΑΘΑΝΑΣΙΟΣ Θέμα: «Ανάπτυξη εφαρμογής για προσωπικό γυμναστή σε Android» «Development of a personal trainer application in Android» Επιβλέπων Καθηγητής:

Διαβάστε περισσότερα

Εισαγωγικές έννοιες. Ιωάννης Γ. Τσούλος 2014

Εισαγωγικές έννοιες. Ιωάννης Γ. Τσούλος 2014 Εισαγωγικές έννοιες Ιωάννης Γ. Τσούλος 2014 Διάγραμμα παρουσιάσεως 1. Κατηγορίες κινητών τηλεφώνων 2. Κατηγορίες έξυπνων κινητών τηλεφώνων 3. Προγραμματισμός κινητών συσκευών 4. Ξεκίνημα με το Eclipse

Διαβάστε περισσότερα

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

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

8 Maps. 8.1 Δημουργία Activity με χάρτη

8 Maps. 8.1 Δημουργία Activity με χάρτη 8 Maps Ένα πολύ σημαντικό κομμάτι πολλών εφαρμογών για κινητά, χρησιμοποιούν χάρτες και τη θέση του χρήστη για να πραγματοποιήσουν κάποιες λειτουργίες που δεν είναι δυνατόν να συμβούν με έναν απλό υπολογιστή.

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπερφόρτωση Αντικείμενα σαν ορίσματα ΥΠΕΡΦΟΡΤΩΣΗ H κλάση Car Μια κλάση που κρατάει την θέση ενός αυτοκινήτου. Μέθοδος move(): μετακινεί το αυτοκίνητο κατά μία

Διαβάστε περισσότερα

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

Βασικά της γλώσσας JAVA 17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

Δείκτες υγείας αντιπροσωπευτικού δείγματος του πληθυσμού στην Ελλάδα

Δείκτες υγείας αντιπροσωπευτικού δείγματος του πληθυσμού στην Ελλάδα Δείκτες υγείας αντιπροσωπευτικού δείγματος του πληθυσμού στην Ελλάδα Αποτελέσματα σωματομετρικών μετρήσεων Ελένη Πέππα, Διατροφολόγος Επιστημονική Συνεργάτις Ελληνικού Ιδρύματος Υγείας 1 ΒΑΣΙΚΕΣ ΣΩΜΑΤΟΜΕΤΡΙΚΕΣ

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

Διαβάστε περισσότερα

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές

Διαβάστε περισσότερα

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014 .. Μεθοδολογία Προγραμματισμού Abstract Κλάσεις και Interfaces Νικόλαος Πεταλίδης Τμήμα Μηχανικών Η/Υ ΤΕΙ Κεντρικής Μακεδονίας Εισαγωγή Εαρινό Εξάμηνο 2014 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να αναπτύξουν ένα πρόγραμμα όπου θα επαναλάβουν τα βήματα ανάπτυξης μιας παραθυρικής εφαρμογής.

Διαβάστε περισσότερα

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

Wrapper Classes, Abstract Classes and Interfaces

Wrapper Classes, Abstract Classes and Interfaces Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 13/12/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 13/12/07 Ένα απλό παράδειγμα μιας κλάσης εφαρμογής με δύο μεθόδους (κλήση μεθόδου μέσα στην ίδια κλάση): import java.util.*; public class Example

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

Διαβάστε περισσότερα

Βασικάχαρακτηριστικάτηςγλώσσας. Πίνακες, Έλεγχος Ροής και Βρόχοι

Βασικάχαρακτηριστικάτηςγλώσσας. Πίνακες, Έλεγχος Ροής και Βρόχοι Βασικάχαρακτηριστικάτηςγλώσσας Πίνακες, Έλεγχος Ροής και Βρόχοι Πίνακες Τρόπος αποθήκευσης πολλών στοιχείων που έχουν τον ίδιο πρωταρχικό τύπο δεδοµένων ή κλάση. Τα στοιχεία µπορεί να έχουν οποιοδήποτε

Διαβάστε περισσότερα

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15 Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Συλλογή απορριμμάτων Συλλογή απορριμμάτων (Garbage

Διαβάστε περισσότερα

Κεφάλαιο 1. Στόχος και σκοπός της εργασίας

Κεφάλαιο 1. Στόχος και σκοπός της εργασίας Κεφάλαιο 1 Στόχος και σκοπός της εργασίας Η ανάγκη υποστήριξης επαγγελματιών αγροτών από σύγχρονα τεχνολογικά μέσα μας οδήγησε στην υλοποίηση αυτής της εφαρμογής. Υπό την επίβλεψη του κ. Θεόδωρου Λάντζου

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ 0ΕΜΑ:ΕΦΑΡΜΟΓΗ GOOGLE MAPS ΣΕ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΠΗΜ Α ADROID OS

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ 0ΕΜΑ:ΕΦΑΡΜΟΓΗ GOOGLE MAPS ΣΕ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΠΗΜ Α ADROID OS ΤΕΙ ΚΑΒΑΛΑΣ ΤΜ ΗΜ Α ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2009-2010 ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ 0ΕΜΑ:ΕΦΑΡΜΟΓΗ GOOGLE MAPS ΣΕ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΠΗΜ Α ADROID OS ΟΝΟΜΑΤΕΠΩΝΥΜΟ ΣΠΟΥΔΑΣΤΩΝ 1)ΚΟΥΤΣΟΓΙΑΝΝΗΣ ΧΡΥΣΟΒΑΛΑΝΤΗΣ

Διαβάστε περισσότερα

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι Μαθήματα από το lab Boolean μεταβλητές: Συνήθως τα ονόματα που δίνουμε στις boolean μεταβλητές περιγράφουν

Διαβάστε περισσότερα

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

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1 Κληρονομικότητα Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Κληρονομικότητα 1 Ιεραρχίες Κλάσεων Στην Java (και γενικότερα στον αντικειμενοστραφή προγραμματισμό) μπορεί από μία να κλάση να δημιουργηθεί

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να καταλάβουν την διαφορά ανάμεσα σε τοπικές και καθολικές μεταβλητές. Nα κατασκευάσουν πίνακες

Διαβάστε περισσότερα

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

Διαβάστε περισσότερα

4 Συλλογές Αντικειμένων

4 Συλλογές Αντικειμένων 4 Συλλογές Αντικειμένων Πώς χειριζόμαστε αντικείμενα σε ομάδες με επανάληψη Η Απαίτηση Συλλογών Αντικειμένων Πολλές εφαρμογές χρειάζονται πλήθος αντικειμένων: Κατάλογος βιβλίων Φοιτητολόγιο Πελατολόγιο

Διαβάστε περισσότερα

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα

Διαβάστε περισσότερα

ΕΠΛ 012. JavaScripts

ΕΠΛ 012. JavaScripts ΕΠΛ 012 JavaScripts Γλώσσα JavaScript (JS) ηµιουργεί δυναµικές ιστοσελίδες και αλληλεπιδράσεις µε το χρήστη εν είναι Java, αλλά είναι αντικειµενοστραφής (απλό µοντέλο υποκειµένων) Objects, properties (τιµές

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Σχεδίαση Κλάσεων Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr 1 Δομημένος προγραμματισμός έναντι αντικειμενοστρεφούς

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Nα κατασκευάσουν πίνακες από δεδομένα. Να κατασκευάσουν συναρτήσεις με πίνακες. Να κάνουν χρήση

Διαβάστε περισσότερα

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

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Παύλος Εφραιμίδης 1 Βασικά Στοιχεία της γλώσσας Τύποι Δεδομένων Η έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) iti τύπους δεδομένων δδ αναφορές 2 Βασικά Στοιχεία της

Διαβάστε περισσότερα

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) Γιάννης Σαμωνάκης 1 Περιεχόμενα Τι είναι η PHP Που μπορεί να χρησιμοποιηθεί

Διαβάστε περισσότερα

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr. Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

Διαβάστε περισσότερα

Για να κάνουμε μια εικόνα να εξαφανίζεται και μια να εμφανίζεται (cross fade), κάνουμε τον συνδυασμό των από πάνω

Για να κάνουμε μια εικόνα να εξαφανίζεται και μια να εμφανίζεται (cross fade), κάνουμε τον συνδυασμό των από πάνω 4. Media Έχετε ήδη δει πως βάζετε μια εικόνα στο Android Studio με το ImageView. Σε αυτό το κεφάλαιο θα μάθετε πώς μπορείτε να κάνετε κάποια βασικά animation και να διαχειριστείτε Video και Audio. 4.1

Διαβάστε περισσότερα

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

άσκηση Hide UI Elements 7.2 Try and Catch 7.1 Hide UI Elements Στο Android Studio όταν θέλουμε να κρύψουμε οτιδήποτε (κάποιο Button, ένα TextView, ένα ImageView κλπ) μπορούμε να χρησιμοποιήσουμε την παρακάτω εντολή: setvisibility(view.invisible)

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

Διαβάστε περισσότερα

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795 Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795 Περιεχόμενα Εισαγωγή Εγκατάσταση Δημιουργία νέου project Java Editor Perspectives Δημιουργία source folders Προσθήκη νέου αρχείου στο project Εισάγωντας

Διαβάστε περισσότερα

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors). Κατασκευαστές Μέθοδοι Κατασκευής (Constructors). Οι κατασκευαστές (constructors) είναι μέθοδοι που εκτελούνται όταν κατασκευάζεται ένα αντικείμενο. Μια τάξη μπορεί να έχει αρκετούς κατασκευαστές, οι οποίοι

Διαβάστε περισσότερα

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής

Διαβάστε περισσότερα

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Τετάρτη, 30 Οκτωβρίου 2013 Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Λύστε στο Visual Basic Express 2010 τις παρακάτω ασκήσεις: 1. Να δημιουργήσετε ένα νέο Project του είδους Console

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Στην άσκηση αυτή θα υλοποιήσετε μια κλάση RandomVector η οποία διαχειρίζεται ένα τυχαίο διάνυσμα ακεραίων το οποίο μπορεί να έχει οποιοδήποτε

Διαβάστε περισσότερα

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων

Διαβάστε περισσότερα

How to register an account with the Hellenic Community of Sheffield.

How to register an account with the Hellenic Community of Sheffield. How to register an account with the Hellenic Community of Sheffield. (1) EN: Go to address GR: Πηγαίνετε στη διεύθυνση: http://www.helleniccommunityofsheffield.com (2) EN: At the bottom of the page, click

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors Μαθήματα από το lab Ένα πρόγραμμα αποτελείται από διάφορες κλάσεις και αντικείμενα αυτών των κλάσεων. Μία από τις κλάσεις

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 6: Ασκήσεις στη Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

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

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών ΗΥ-252 Αντικειµενοστρεφής Προγραµµατισµός Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Θέμα 1 Θέμα 2 Θέμα 3 Θέμα 4 Θέμα

Διαβάστε περισσότερα

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

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1 HelloWorld Παύλος Εφραιμίδης Java Το πρόγραμμα HelloWorld 1 Το πρόγραμμα HelloWorld.java Σχόλια στη Java /** * The HelloWorld class */ class HelloWorld { public static void main(string[] args) { System.out.println("Hello

Διαβάστε περισσότερα

7 f i n a l S t r i n g mytelephone=" 1212121212 " ; 8 10 {

7 f i n a l S t r i n g mytelephone= 1212121212  ; 8 10 { 1 Επικοινωνία 1.1 Κλήση αριθμού Για να επιτρέψουμε σ το κινητό να κάνει κλήσ η σ ε τηλέφωνο θα πρέπει να έχουμε προσ θέσ ει την επόμενη άδεια σ το αρχείο AndroidManifest.xml

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Σύγκριση JAVA-C ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΣΥΓΚΡΙΣΗ JAVA - C ΤΥΠΟΙ

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.

Διαβάστε περισσότερα

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

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 7ο Τμήμα Διοίκησης Επιχειρήσεων Παλαιό ΕΠΔΟ α εξάμηνο Β. Φερεντίνος Δείκτες (Pointers) (1) 142 Κάθε μεταβλητή, εκτός από την τιμή της, έχει και μία συγκεκριμένη διεύθυνση

Διαβάστε περισσότερα

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

ΕΠΛ131 Αρχές Προγραμματισμού ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ131 Αρχές Προγραμματισμού Ακαδημαϊκό Έτος 2016/17 Χειμερινό Εξάμηνο ΕΝΔΙΑΜΕΣΗ ΕΞΕΤΑΣΗ ΗΜΕΡΟΜΗΝΙΑ: 29 Οκτωβρίου 2016 ΔΙΑΡΚΕΙΑ: 10:00πμ 12:30μμ ΑΙΘΟΥΣΕΣ: Κτήριο

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι Ορισμός κλάσης και αντικειμένων Μία κλάση Κ ορίζεται από

Διαβάστε περισσότερα

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩN ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ι ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟΔΟΣ: ΙΟΥΝΙΟΣ 2015 (10/7/2015) ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α 1. (3.5 μονάδες)

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγ/μό Η/Υ Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός

Διαβάστε περισσότερα

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 8 ο Α. Ύλη εργαστηρίου 8.1 Αντικειμενοστραφής προγραμματισμός 8.2 Κλάσεις

Διαβάστε περισσότερα

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13 Wrapper Classes, Abstract Classes and Interfaces Διάλεξη #13: Μεταβλητές/μέθοδοι κλάσης, αφηρημένες κλάσεις και διαπροσωπείες Μεταβλητές /πεδία κλάσης [class variables] Τα αντικείμενα ανήκουν σε κλάσεις

Διαβάστε περισσότερα

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

Δομές Δεδομένων - Εργαστήριο 2. Λίστες Λίστες Λίστες (Lists) : Συλλογή δεδομένων σε δυναμικά δεσμευμένους κόμβους. Κάθε κόμβος περιέχει συνδέσεις προς άλλους κόμβους. Προσπέλαση -στού κόμβου διατρέχοντας όλους τους προηγούμενους. Πολλές παραλλαγές

Διαβάστε περισσότερα

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Πέμπτη 11 / 12 / 2014 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Πέμπτη 11 / 12 / 2014 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών 5 o Εξάμηνο ΤΗΜΜΥ Α.Π.Θ 2014-2015 Πέμπτη 11 / 12 / 2014 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ DS Gomoku Part 3 MinMax Algorithm (0,5 βαθμοί)

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα