Page 3 of 4

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

Posted: Wed Apr 12, 2017 4:12 pm
by Georgilakis Antonios

Code: Select all

[...] implements Service
Πολύ καλή ιδέα και παρατήρηση. (εξαιρετική βασικά) :-D

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

Posted: Wed Apr 12, 2017 6:28 pm
by fox0077
τι ακριβως ειναι το instanceof;

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

Posted: Wed Apr 12, 2017 7:04 pm
by Georgilakis Antonios
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

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

Posted: Sun Apr 16, 2017 9:56 pm
by chris-
Όσον αφορά τους υπολογισμούς στην εργασία(τα 2 τελευταία bullets), λέμε για *όλα* τα ενεργά συμβόλαια παράλληλα; Ή μέσω επιλογής;

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

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

Το παραπάνω μην τον πάρεις και ντε φάκτο όμως. Είναι απλώς μια άποψη.

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

Posted: Thu Apr 27, 2017 12:28 pm
by fox0077
Δεν εχω καταλαβει τι ακριβως ειναι το static και το final και με ποια κριτηρια προσδιοριζουμε καποιες μεταβλητες ετσι...

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

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

Υ.Γ. Και πάλι λέω δεν θέλω να σε αποθαρρύνω Πολλές φορές μπορεί να μην έχεις την δυνατότητα να ρωτήσεις κάποιον και είναι πολύ σημαντικό γενικά να μάθεις πώς να μαθαίνεις.

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

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

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

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

Posted: Thu Apr 27, 2017 2:33 pm
by Papapostolou
Να κάνω και εγω μια ερώτηση με τη σειρά μου ρε παιδιά γιατι έχω προσπαθήσει με πολλούς τρόπους να υλοποιήσω την 1η Εργασία και όλου καπου κολλάω και δε μου βγαίνει, οταν λεει η ασκηση να μοντελοποιησουμε πινακες με αντικειμενα Contract και αντικείμενα Service δεν θα πρεπει να εχουμε ξεχωριστες κλάσεις στις οποίες να το κάνουμε αυτο με την χρήση ArrayList ; Και αν ναι τότε πως θα δημιουργούμε αντικείμενα διαφορετικών κλασσεων π.χ κανονικου-συμβολαιου , καρτοσυμβολαίου κτλπ και θα τα βάζουμε στο ίδιο Array ;

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

Posted: Thu Apr 27, 2017 7:45 pm
by Georgilakis Antonios
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.
Αυτό για την περίπτωση που θες να χρησιμοποιήσεις λίστα με διαφορετικούς τύπους αντικειμένων.

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

Posted: Fri Apr 28, 2017 1:19 am
by pgetsos
Αυτό που λέει ο Αντώνης. Θα κάνεις μια "μαμά" κλάση που θα την κάνουν extend οι υπόλοιπες και η λίστα θα παίρνει αντικείμενα της μαμάς αυτής κλάσης

Δε θυμάμαι αν γίνεται και με interfaces ομολογώ αλλά νομίζω όχι...

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

Posted: Fri Apr 28, 2017 1:46 am
by Georgilakis Antonios
Έχοντας υπόψη και τα σοφά λόγια του @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

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

Posted: Sun Apr 30, 2017 11:11 pm
by Eldebryn
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());

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

Posted: Mon May 01, 2017 3:48 am
by pgetsos
Ωραιος Αντωνη, αυτο θυμομουν με το interface

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

Posted: Tue May 02, 2017 10:07 am
by Georgilakis Antonios
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

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

Posted: Tue May 02, 2017 8:04 pm
by fox0077
ευχαριστουμε @Georgilakis Antonios :)

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

Posted: Tue May 02, 2017 9:16 pm
by Georgilakis Antonios
Και τα παιδιά μαζί (@nikosk, @Eldebryn, @pgetsos) για τις εξαιρετικές παρατηρήσεις που έχουν σημειωθεί πιο πάνω.

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

Posted: Sat Jun 17, 2017 10:10 pm
by kostas_n
παιδες, αν εχουμε καλη επαφη με διαφανειες συρη, εργαστηρια και εργασιες, χρειαζεται και διαβασμα απο βιβλιο για την τελικη εξεταση;

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

Posted: Sat Jun 17, 2017 11:14 pm
by Georgilakis Antonios
kostas_n wrote:παιδες, αν εχουμε καλη επαφη με διαφανειες συρη, εργαστηρια και εργασιες, χρειαζεται και διαβασμα απο βιβλιο για την τελικη εξεταση;
Συνήθως όχι, παρά μόνο για reference αν κάτι δεν το έχεις καταλάβει καλά. Αν και το web θα έχει σίγουρα μπόλικο υλικό για τέτοιες περιπτώσεις, οπότε google it.

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

Posted: Sun Jun 18, 2017 5:43 pm
by kostas_n
να'σαι καλα Αντώνη, ευχαριστω!

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

Posted: Sat Jun 24, 2017 11:25 am
by Μ123
επιτρεπεται κολλα Α4?

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

Posted: Sat Jun 24, 2017 11:35 am
by chriskal
Μ123 wrote:επιτρεπεται κολλα Α4?
Μέχρι πέρσι δεν επιτρεπόταν άρα λογικά ούτε και φέτος