Προγραμματισμός Η/Υ με Java

Τα posts που έγιναν κατά την διάρκεια του Ακαδημαϊκού Έτους 2016-2017 για τα προπτυχιακά μαθήματα.
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Η/Υ με Java

Post by Georgilakis Antonios » Wed Apr 12, 2017 4:12 pm

Code: Select all

[...] implements Service
Πολύ καλή ιδέα και παρατήρηση. (εξαιρετική βασικά) :-D
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
fox0077
byte level
byte level
Posts: 117
Joined: Sun Oct 09, 2016 2:19 pm
Academic status: 4th year

Re: Προγραμματισμός Η/Υ με Java

Post by fox0077 » Wed Apr 12, 2017 6:28 pm

τι ακριβως ειναι το instanceof;
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Η/Υ με Java

Post by Georgilakis Antonios » Wed Apr 12, 2017 7:04 pm

fox0077 wrote:τι ακριβως ειναι το instanceof;
Operator που επιστρέφει boolean.
Δείχνει αν ένα αντικείμενο είναι στιγμιότυπο μιας συγκεκριμένης κλάσης, ή αν είναι στιγμιότυπο κλάσης η οποία είναι απόγονος superclass/interface. (άρα και στιγμιότυπο αυτών)

Πχ:

Code: Select all

interface ITest { /* ... */ }

class Test1 { /* ... */ }

class Test2 extends Test1 implements ITest { /* ... */ }
Έχουμε:

Code: Select all

Test2 x = new Test2();

System.out.println(x instanceof Test1);
System.out.println(x instanceof Test2);

Test1 y = new Test1();

System.out.println(y instanceof Test1);
System.out.println(y instanceof Test2);

ITest z = new Test1();   // ERROR: "Test1" does not implement "ITest".

ITest z = new Test2();

System.out.println(x instanceof ITest);
System.out.println(y instanceof ITest);
System.out.println(z instanceof ITest);
Output:
Console wrote: true
true
true
false
true
false
true
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
User avatar
chris-
bit level
bit level
Posts: 33
Joined: Sun Aug 28, 2016 8:45 pm

Re: Προγραμματισμός Η/Υ με Java

Post by chris- » Sun Apr 16, 2017 9:56 pm

Όσον αφορά τους υπολογισμούς στην εργασία(τα 2 τελευταία bullets), λέμε για *όλα* τα ενεργά συμβόλαια παράλληλα; Ή μέσω επιλογής;
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Η/Υ με Java

Post by Georgilakis Antonios » Tue Apr 18, 2017 1:20 am

chris- wrote:Όσον αφορά τους υπολογισμούς στην εργασία(τα 2 τελευταία bullets), λέμε για *όλα* τα ενεργά συμβόλαια παράλληλα; Ή μέσω επιλογής;
Υποθέτω ότι το πρόγραμμα θα κάνει υπολογισμούς μόνο για τα απαραίτητα κάθε φορά.
Φαντάζομαι την ύπαρξη συναρτήσεων σε κατάλληλες κλάσεις - ή την ύπαρξη συναρτήσεων σε κατάλληλα σημεία λόγω της δόμησης του κώδικα - οι οποίες όταν καλούνται θα κάνουν τους απαραίτητους υπολογισμούς, και το πρόγραμμα θα καλεί αυτές που χρειάζονται κάθε φορά για το περιεχόμενο που θα πρέπει να τυπωθεί στην κονσόλα.

Το παραπάνω μην τον πάρεις και ντε φάκτο όμως. Είναι απλώς μια άποψη.
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
fox0077
byte level
byte level
Posts: 117
Joined: Sun Oct 09, 2016 2:19 pm
Academic status: 4th year

Re: Προγραμματισμός Η/Υ με Java

Post by fox0077 » Thu Apr 27, 2017 12:28 pm

Δεν εχω καταλαβει τι ακριβως ειναι το static και το final και με ποια κριτηρια προσδιοριζουμε καποιες μεταβλητες ετσι...
User avatar
nikosk
Venus Former Team Member
Posts: 545
Joined: Thu Oct 14, 2010 7:13 pm
Academic status: N>4
Gender:

Re: Προγραμματισμός Η/Υ με Java

Post by nikosk » Thu Apr 27, 2017 1:43 pm

fox0077 wrote:Δεν εχω καταλαβει τι ακριβως ειναι το static και το final και με ποια κριτηρια προσδιοριζουμε καποιες μεταβλητες ετσι...
Ξέρω ότι κάποιοι θα σου απαντήσουν στην ερώτηση σου άλλα εγώ θα ήθελα να σε ρωτήσω κάτι άλλο. Ψάχνεις κάτι στο διαδίκτυο πριν το ρωτήσεις εδώ;
Δεν θέλω να σε αποθαρρύνω να ρωτάς ,απλά αν η πρώτη σου επιλογή είναι να ρωτήσεις στο forum, για εμένα είναι λάθος προσέγγιση. Καλό είναι να μάθεις να διαβάζεις αρχικά το documentation μιας γλώσσας, έπειτα να αναζήτας παραδείγματα και ως τελική επιλογή να ρωτάς σε κάποιο forum, stackoverflow etc.

Υ.Γ. Και πάλι λέω δεν θέλω να σε αποθαρρύνω Πολλές φορές μπορεί να μην έχεις την δυνατότητα να ρωτήσεις κάποιον και είναι πολύ σημαντικό γενικά να μάθεις πώς να μαθαίνεις.
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
Samuel Beckett
fox0077
byte level
byte level
Posts: 117
Joined: Sun Oct 09, 2016 2:19 pm
Academic status: 4th year

Re: Προγραμματισμός Η/Υ με Java

Post by fox0077 » Thu Apr 27, 2017 1:51 pm

nikosk wrote:
fox0077 wrote:Δεν εχω καταλαβει τι ακριβως ειναι το static και το final και με ποια κριτηρια προσδιοριζουμε καποιες μεταβλητες ετσι...
Ξέρω ότι κάποιοι θα σου απαντήσουν στην ερώτηση σου άλλα εγώ θα ήθελα να σε ρωτήσω κάτι άλλο. Ψάχνεις κάτι στο διαδίκτυο πριν το ρωτήσεις εδώ;
Δεν θέλω να σε αποθαρρύνω να ρωτάς ,απλά αν η πρώτη σου επιλογή είναι να ρωτήσεις στο forum, για εμένα είναι λάθος προσέγγιση. Καλό είναι να μάθεις να διαβάζεις αρχικά το documentation μιας γλώσσας, έπειτα να αναζήτας παραδείγματα και ως τελική επιλογή να ρωτάς σε κάποιο forum, stackoverflow etc.

Υ.Γ. Και πάλι λέω δεν θέλω να σε αποθαρρύνω Πολλές φορές μπορεί να μην έχεις την δυνατότητα να ρωτήσεις κάποιον και είναι πολύ σημαντικό γενικά να μάθεις πώς να μαθαίνεις.
Το εψαξα και κατι διαβασα απο ενα tutorial και στην αρχη καταλαβα, αλλα μετα οταν συνεχισα να διαβαζω κι αλλα σχετικα, αρχισα να μπερδευομαι...
Papapostolou
Buffer underflow exception
Buffer underflow exception
Posts: 2
Joined: Thu Aug 11, 2016 6:16 pm
Academic status: 1st year
Gender:

Re: Προγραμματισμός Η/Υ με Java

Post by Papapostolou » Thu Apr 27, 2017 2:33 pm

Να κάνω και εγω μια ερώτηση με τη σειρά μου ρε παιδιά γιατι έχω προσπαθήσει με πολλούς τρόπους να υλοποιήσω την 1η Εργασία και όλου καπου κολλάω και δε μου βγαίνει, οταν λεει η ασκηση να μοντελοποιησουμε πινακες με αντικειμενα Contract και αντικείμενα Service δεν θα πρεπει να εχουμε ξεχωριστες κλάσεις στις οποίες να το κάνουμε αυτο με την χρήση ArrayList ; Και αν ναι τότε πως θα δημιουργούμε αντικείμενα διαφορετικών κλασσεων π.χ κανονικου-συμβολαιου , καρτοσυμβολαίου κτλπ και θα τα βάζουμε στο ίδιο Array ;
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Η/Υ με Java

Post by Georgilakis Antonios » Thu Apr 27, 2017 7:45 pm

fox0077 wrote:Το εψαξα και κατι διαβασα απο ενα tutorial και στην αρχη καταλαβα, αλλα μετα οταν συνεχισα να διαβαζω κι αλλα σχετικα, αρχισα να μπερδευομαι...
Το programming θέλει υπομονή, δεν είναι τσακ-μπαμ πράγματα. Εκτός αν είσαι τσακάλι πλέον. :-D

Ο @nikosk έχει άπειρο δίκιο. Πρέπει να τον ακούσεις.
Πράγματι, και προσωπικά, στην θέση σου θα συμβουλευόμουν (εκτός των άλλων) και τα παρακάτω:

final keyword: https://en.wikipedia.org/wiki/Final_(Java)
static keyword: https://docs.oracle.com/javase/tutorial ... svars.html

Όπως καταλαβαίνεις, η απάντηση στο ερώτημά σου είναι εξαιρετικά εκτενής, και οι πηγές πλήρεις, συνεπώς δεν βρίσκω προσωπικά κάποιο νόημα να γραφεί επιπλέον εξήγηση στο forum, παρά μόνο αν είναι κάτι πιο "ειδικό" αν θες. Κάνε ένα κόπο τουλάχιστον να καταλάβεις έστω τα απλά σημεία, και απορίες μετά. Και αυτό προφανώς γράφοντας παράλληλα προγράμματα για εξάσκηση, οι πηγές έχουν παραδείγματα για (κάπως "μπόλικο") πειραματισμό.

Ωστόσο, θα παραθέσω και δύο ακόμα (άκρως γελοίες - sorry guys :-D ) ασκήσεις for you:

Άσκηση 1
Γράψτε ένα πρόγραμμα JAVA, το οποίο θα αρχικοποιεί ένα αυθαίρετο αριθμό αντικειμένων μιας κλάσης που θα ορίσετε εσείς, και θα καταμετρά τον αριθμό των αντικειμένων αυτών. Η τιμή του μετρητή θα πρέπει να λαμβάνεται μέσω κλήσης συνάρτησης που θα οριστεί στην κλάση που θα κατασκευάσετε, και η οποία θα πρέπει επιπλέον να μπορεί να κληθεί τόσο από οποιοδήποτε αντικείμενο της κλάσης αυτής, όσο και από την ίδια την κλάση χωρίς την ύπαρξη αντικειμένου. Όταν δεν υπάρχουν αντικείμενα της κλάσης, ο μετρητής θα πρέπει να επιστρέφει "0".

Άσκηση 2
Δίνεται η παρακάτω κλάση:

Code: Select all

public abstract class Test
{
	protected int uuid = 0x12345678;
	
	private long id;
	
	protected Test(long id)
		{ this.id = id; }
	
	public long getID()
		{ return this.id; }
	
	@Override
	public String toString()
	{ 
		return String.format(
		      "Test Class, ID: %ld",
		      this.id
		); 
	}
}
Τροποποιήστε τον παραπάνω ορισμό της κλάσης κατάλληλα, ώστε μετά από επέκταση της κλάσης (χρησιμοποιώντας inheritance) να μην μπορούν να τροποποιηθούν τα πεδία αυτής, να μην μπορούν να "επικαλυφθούν" εκ νέου οι μέθοδοί της με override, και επιπλέον να μην είναι δυνατόν να τροποποιηθούν τα ορίσματα των μεθόδων της εντός αυτών (εφαρμόστε τυχόν αλλαγές σε όσα υπάρχουν στην παραπάνω κλάση από όλα όσα αναφέρθηκαν προηγουμένως). Κατόπιν, ορίστε μια δική σας κλάση που θα επεκτείνει την παραπάνω, και η οποία επιπλέον δεν θα επιτρέπεται να επεκταθεί περαιτέρω με inheritance.
Papapostolou wrote:Να κάνω και εγω μια ερώτηση με τη σειρά μου ρε παιδιά γιατι έχω προσπαθήσει με πολλούς τρόπους να υλοποιήσω την 1η Εργασία και όλου καπου κολλάω και δε μου βγαίνει, οταν λεει η ασκηση να μοντελοποιησουμε πινακες με αντικειμενα Contract και αντικείμενα Service δεν θα πρεπει να εχουμε ξεχωριστες κλάσεις στις οποίες να το κάνουμε αυτο με την χρήση ArrayList ; Και αν ναι τότε πως θα δημιουργούμε αντικείμενα διαφορετικών κλασσεων π.χ κανονικου-συμβολαιου , καρτοσυμβολαίου κτλπ και θα τα βάζουμε στο ίδιο Array ;
Για όλα φταίει το inheritance. Δες πιο πάνω post περί "instanceof" operator, και ιδιαίτερα τα σημεία όπου γίνονται assignments.
Αυτό για την περίπτωση που θες να χρησιμοποιήσεις λίστα με διαφορετικούς τύπους αντικειμένων.
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
User avatar
pgetsos
Venus Former Team Member
Posts: 1192
Joined: Sun Oct 13, 2013 1:29 am
Academic status: MSc
Gender:

Re: Προγραμματισμός Η/Υ με Java

Post by pgetsos » Fri Apr 28, 2017 1:19 am

Αυτό που λέει ο Αντώνης. Θα κάνεις μια "μαμά" κλάση που θα την κάνουν extend οι υπόλοιπες και η λίστα θα παίρνει αντικείμενα της μαμάς αυτής κλάσης

Δε θυμάμαι αν γίνεται και με interfaces ομολογώ αλλά νομίζω όχι...
Όταν μια μαύρη γάτα περάσει από μπροστά σου, σημαίνει ότι το ζώο πάει κάπου.

Μην αφήνεις τα μικρά μυαλά να σε πείσουν ότι τα όνειρα σου είναι πολύ μεγάλα.
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Η/Υ με Java

Post by Georgilakis Antonios » Fri Apr 28, 2017 1:46 am

Έχοντας υπόψη και τα σοφά λόγια του @Eldebryn (δείτε επιπλέον και το post που παρέθεσε και ο ίδιος πιο πάνω), έχουμε:

Code: Select all

import java.util.ArrayList;

interface ITest { }
class Test implements ITest { }

public class Program
{
	public static void main(
			final String[ ] arguments
	)
	{
		final ArrayList<ITest> list =
				new ArrayList<ITest>();
		
		list.add(new Test());
		
		System.out.println(list.size());
	}
}
Output:
Console wrote: 1
:-D
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
User avatar
Eldebryn
Venus Former Team Member
Posts: 1116
Joined: Sat Sep 18, 2010 8:43 pm
Academic status: Alumnus/a
Gender:
Location: Somewhere in the Forgotten Realms...

Re: Προγραμματισμός Η/Υ με Java

Post by Eldebryn » Sun Apr 30, 2017 11:11 pm

Georgilakis Antonios wrote:Έχοντας υπόψη και τα σοφά λόγια του @Eldebryn (δείτε επιπλέον και το post που παρέθεσε και ο ίδιος πιο πάνω), έχουμε:
Spoiler: εμφάνιση/απόκρυψη
[code] import java.util.ArrayList; interface ITest { } class Test implements ITest { } public class Program { public static void main( final String[ ] arguments ) { final ArrayList<ITest> list = new ArrayList<ITest>(); list.add(new Test()); System.out.println(list.size()); } } [/code] Output: [quote="Console"] 1
:-D[/spoiler]
[/quote]
Είναι μία πολύ καλή προσέγγιση, και είναι βασικά ο τρόπος που πρέπει να σκέφτεται κανείς σε μία OO γλώσσα όπως η Java (η οποία μάλιστα υποστηρίζει πολύ τέτοιους τρόπους. Μοναδική βελτίωση θα ήταν απλά:

Code: Select all

// ArrayList can be later changed to any implementation of the List Interface
// so as to server the application's needs
// Also, the generic only needs to be written in the declaration
private final List<ITest> list = new ArrayList<>();

list.add(new Test());

System.out.println(list.size());
Image<-- My profile playlists
User avatar
pgetsos
Venus Former Team Member
Posts: 1192
Joined: Sun Oct 13, 2013 1:29 am
Academic status: MSc
Gender:

Re: Προγραμματισμός Η/Υ με Java

Post by pgetsos » Mon May 01, 2017 3:48 am

Ωραιος Αντωνη, αυτο θυμομουν με το interface
Όταν μια μαύρη γάτα περάσει από μπροστά σου, σημαίνει ότι το ζώο πάει κάπου.

Μην αφήνεις τα μικρά μυαλά να σε πείσουν ότι τα όνειρα σου είναι πολύ μεγάλα.
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Η/Υ με Java

Post by Georgilakis Antonios » Tue May 02, 2017 10:07 am

Eldebryn wrote: Είναι μία πολύ καλή προσέγγιση, και είναι βασικά ο τρόπος που πρέπει να σκέφτεται κανείς σε μία OO γλώσσα όπως η Java (η οποία μάλιστα υποστηρίζει πολύ τέτοιους τρόπους. Μοναδική βελτίωση θα ήταν απλά:
Spoiler: εμφάνιση/απόκρυψη
[code] // ArrayList can be later changed to any implementation of the List Interface // so as to server the application's needs // Also, the generic only needs to be written in the declaration private final List<ITest> list = new ArrayList<>(); list.add(new Test()); System.out.println(list.size()); [/code]
pgetsos wrote:Ωραιος Αντωνη, αυτο θυμομουν με το interface
:smt023 :smt023 :smt023
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
fox0077
byte level
byte level
Posts: 117
Joined: Sun Oct 09, 2016 2:19 pm
Academic status: 4th year

Re: Προγραμματισμός Η/Υ με Java

Post by fox0077 » Tue May 02, 2017 8:04 pm

ευχαριστουμε @Georgilakis Antonios :)
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Η/Υ με Java

Post by Georgilakis Antonios » Tue May 02, 2017 9:16 pm

Και τα παιδιά μαζί (@nikosk, @Eldebryn, @pgetsos) για τις εξαιρετικές παρατηρήσεις που έχουν σημειωθεί πιο πάνω.
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
kostas_n
Buffer underflow exception
Buffer underflow exception
Posts: 2
Joined: Sat Jun 17, 2017 10:06 pm

Re: Προγραμματισμός Η/Υ με Java

Post by kostas_n » Sat Jun 17, 2017 10:10 pm

παιδες, αν εχουμε καλη επαφη με διαφανειες συρη, εργαστηρια και εργασιες, χρειαζεται και διαβασμα απο βιβλιο για την τελικη εξεταση;
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 548
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: Alumnus/a
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Η/Υ με Java

Post by Georgilakis Antonios » Sat Jun 17, 2017 11:14 pm

kostas_n wrote:παιδες, αν εχουμε καλη επαφη με διαφανειες συρη, εργαστηρια και εργασιες, χρειαζεται και διαβασμα απο βιβλιο για την τελικη εξεταση;
Συνήθως όχι, παρά μόνο για reference αν κάτι δεν το έχεις καταλάβει καλά. Αν και το web θα έχει σίγουρα μπόλικο υλικό για τέτοιες περιπτώσεις, οπότε google it.
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
kostas_n
Buffer underflow exception
Buffer underflow exception
Posts: 2
Joined: Sat Jun 17, 2017 10:06 pm

Re: Προγραμματισμός Η/Υ με Java

Post by kostas_n » Sun Jun 18, 2017 5:43 pm

να'σαι καλα Αντώνη, ευχαριστω!
Μ123
bit level
bit level
Posts: 22
Joined: Sat Nov 05, 2016 4:08 pm

Re: Προγραμματισμός Η/Υ με Java

Post by Μ123 » Sat Jun 24, 2017 11:25 am

επιτρεπεται κολλα Α4?
User avatar
chriskal
bit level
bit level
Posts: 13
Joined: Sun Aug 31, 2014 10:44 pm
Academic status: 2nd year
Gender:

Re: Προγραμματισμός Η/Υ με Java

Post by chriskal » Sat Jun 24, 2017 11:35 am

Μ123 wrote:επιτρεπεται κολλα Α4?
Μέχρι πέρσι δεν επιτρεπόταν άρα λογικά ούτε και φέτος
Locked

Return to “Ακαδημαϊκό Έτος 2016-2017”