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

Τα posts που έγιναν κατά την διάρκεια του Ακαδημαϊκού Έτους 2016-2017 για τα προπτυχιακά μαθήματα.
fox0077
byte level
byte level
Posts: 117
Joined: Sun Oct 09, 2016 2:19 pm
Academic status: 4th year

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

Post by fox0077 » Sun Mar 19, 2017 9:04 pm

Μπορει να μου πει καποιος ποιο ειναι το error σε αυτο το πολυ απλο παραδειγμα;

Code: Select all

import java.util.Scanner;

public class Test {
	
	public static void main(String args[]) {
		
		Scanner in = new Scanner(System.in);
		Dog goofy = new Dog();
		
		System.out.println("How would you like to name your dog? ");
		String name = in.next();
		Dog.setName(name);
		
		System.out.println("Your dog's name: "+Dog.getName());
	}
}

Code: Select all

public class Dog {
	
	private String name;
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
} 
User avatar
leecher
Venus Former Team Member
Posts: 139
Joined: Fri Jan 23, 2015 9:47 pm
Academic status: N>4
Gender:

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

Post by leecher » Sun Mar 19, 2017 9:26 pm

Για να καλέσεις τις συναρτήσεις του αντικειμένου goofy, πρέπει να γράψεις για παράδειγμα goofy.setName(name), όχι Dog.setName(name). Το ίδιο και στο getName()
fox0077
byte level
byte level
Posts: 117
Joined: Sun Oct 09, 2016 2:19 pm
Academic status: 4th year

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

Post by fox0077 » Sun Mar 19, 2017 9:29 pm

Ουπς, σωστος! *facepalm* Ειμαι πολυ αφηρημενος/η
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 » Thu Mar 23, 2017 11:15 am

Μ'αρέσει η ασάφεια για το φύλο
Όταν μια μαύρη γάτα περάσει από μπροστά σου, σημαίνει ότι το ζώο πάει κάπου.

Μην αφήνεις τα μικρά μυαλά να σε πείσουν ότι τα όνειρα σου είναι πολύ μεγάλα.
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 Mar 29, 2017 1:59 pm

Code: Select all

class Simulator {
protected static float time;
protected int x;
}
class SimDemo {
public static void main(String [] args){
Simulator ob1=new Simulator();
Simulator ob2=new Simulator();
ob1.x=10;
ob2.x=20;
System.out.println(“ob1.x and ob2.x are independent, ob1.x: ” + ob1.x + “,
ob2.x: ” + ob2.x);
ob1.time=66; ob2.time=99;
System.out.println(“static variable time can be accessed through class name,
Simuator.time: ” + Simulator.time + “, ob1.time: ” + ob1.time + “,
ob2.time:” + ob2.time);
}
Output:
ob1.x and ob2.x are independent, ob1.x: 10, ob2.x: 20
static variable time can be accessed through class name, Simulator.time: 99,
ob1.time: 99, ob2.time: 99
Γιατι το Simulator.Time, ob1.time, ob2.time ειναι ολα 99;
User avatar
leecher
Venus Former Team Member
Posts: 139
Joined: Fri Jan 23, 2015 9:47 pm
Academic status: N>4
Gender:

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

Post by leecher » Wed Mar 29, 2017 3:21 pm

Είναι όλα 99 γιατί το time είναι static, που σημαίνει ότι έχει κοινή τιμή μεταξύ των αντικειμένων της κλάσης Simulator. Η τελευταία τιμή που δόθηκε στο time είναι το 99. (ob2.time=99)
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 Mar 29, 2017 6:55 pm

Code: Select all

class Test {
/* This method causes no change to the arguments
used in the call. */
void noChange(int i, int j) {
i = i + j;
j = -j;
}
}
class CallWithValue {
public static void main(String args[]) {
Test ob = new Test();
int a = 15, b = 20;
System.out.println("a and b before call: " + a + " " + b);
ob.noChange(a, b);
System.out.println("a and b after call: " + a + " " + b);
}
}
Output:
a and b before call: 15 20
a and b after call: 15 20

Γιατι οι τιμες δεν αλλαζουν;; Αφου θυμαμαι στο 1ο εξαμηνο οτι οταν καλουσαμε μεθοδους οι τιμες αλλαζανε :?:
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 Mar 29, 2017 7:41 pm

Εδώ οι παράμετροι είναι primitive και περνάνε καθαρά by value (copy).
Αν η παράμετρος ήταν αντικείμενο (object), τότε περνά με αντιγραφή ο εσωτερικός δείκτης σε αυτό, αλλά όχι το ίδιο το αντικείμενο.

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

Αν θες να περάσεις γνήσιο αντίγραφο αντικειμένου, τότε θα κάνεις κλωνοποίηση αυτού, ώστε ο νέος εσωτερικός δείκτης να δείχνει σε αντίγραφο του αντικειμένου και όχι στο original. Μεγάλη προσοχή σε αντικείμενα που μέσα τους εμπεριέχουν και άλλα αντικείμενα (π.χ. collections), όπου εκεί πλέον εισάγουμε τις έννοιες shallow και deep copy.

-------------------------------------------------------------------------------------------------------------------------------------

Σε C++ (για του χρόνου :-D ), αυτό:

Code: Select all

void something(int x, int y) { // Simple copy. (Damn, I lost the two suspects) }
είναι διαφορετικό από αυτό:

Code: Select all

// Pass by reference.

void something(int & x, int & y) { // Hmm, I see you x,y parameters, you can't hide. }
το οποίο είναι επίσης διαφορετικό (αλλά όχι εύκολα προφανές) από αυτό:

Code: Select all

// Welcome to the world of pointers.

void something(int *x, int *y) { // Crazy stuff, have fun :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
pgetsos
Venus Former Team Member
Posts: 1192
Joined: Sun Oct 13, 2013 1:29 am
Academic status: MSc
Gender:

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

Post by pgetsos » Thu Mar 30, 2017 3:53 am

Θάνατος στην c++
Όταν μια μαύρη γάτα περάσει από μπροστά σου, σημαίνει ότι το ζώο πάει κάπου.

Μην αφήνεις τα μικρά μυαλά να σε πείσουν ότι τα όνειρα σου είναι πολύ μεγάλα.
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 Mar 30, 2017 11:02 am

pgetsos wrote:Θάνατος στην c++
LOL :lol: :lol: :lol:
"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: RE: Re: Προγραμματισμός Η/Υ με Java

Post by pgetsos » Thu Mar 30, 2017 11:32 am

Georgilakis Antonios wrote:
pgetsos wrote:Θάνατος στην c++
LOL [emoji38] [emoji38] [emoji38]
Ψυχολογικά από την τότε εργασία :-D
Όταν μια μαύρη γάτα περάσει από μπροστά σου, σημαίνει ότι το ζώο πάει κάπου.

Μην αφήνεις τα μικρά μυαλά να σε πείσουν ότι τα όνειρα σου είναι πολύ μεγάλα.
fox0077
byte level
byte level
Posts: 117
Joined: Sun Oct 09, 2016 2:19 pm
Academic status: 4th year

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

Post by fox0077 » Fri Mar 31, 2017 12:19 am

Ρε σεις, μη με τρομαζετε με την c++, 2ο εξαμηνο ειμαι, λυπηθειτε με :-P
@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 » Fri Mar 31, 2017 1:33 am

fox0077 wrote:Ρε σεις, μη με τρομαζετε με την c++, 2ο εξαμηνο ειμαι, λυπηθειτε με :-P
@Georgilakis Antonios δεν εχω απολυτη σιγουρια οτι καταλαβα ολα αυτα που ειπες με το πλουσιο λεξιλογιο αλλα... ας το παρουμε αλλιως: Αυτο ειναι ενα παραδειγμα που οταν καλεις μια μεθοδο δεν αλλαζει τιμη. Τι πρεπει να αλλαξει στο προγραμμα ωστε να αλλαζει η τιμη;
Κανονικά αυτό απαιτεί να περάσεις τις μεταβλητές ως static "πακέτο" μέσα σε αντικείμενο μιας κλάσης για να προσομοιώσεις αυτό που σε άλλες γλώσσες καλείται "structure".

Υπάρχει όμως και ο εξής "ανορθόδοξος" τρόπος (καθαρά για λόγους παρουσίασης εδώ, OXI για real χρήση):

Code: Select all

class Test
{
	// This method DOES make changes to the
	// arguments used in the call.
	
	void trickMe(final int[ ] i, final int[ ] j)
	{
		// Arrays are objects, changes are "recorded".
		// (You are being watched!)
		
		i[0] = i[0] + j[0];
		j[0] = -j[0];
	}
}

publi class Trick
{
	public static void main(final String[ ] arguments)
	{
		Test test = new Test();
		
		// Try to represent the numbers as objects
		// using single-item one-dimensional arrays.
		
		int[ ] a = new int[1];
		int[ ] b = new int[1];
		
		a[0] = 15;
		b[0] = 20;
		
		System.out.println(
			"A and B before call: " + a[0] + " " + b[0]
		);
		
		// Do the trick.
		
		test.trickMe(a, b);
		
		System.out.println(
			"A and B after call: " + a[0] + " " + b[0]
		);
	}
}
Output:

Code: Select all

A and B before call: 15 20
A and B after call: 35 -20
Spoiler: εμφάνιση/απόκρυψη
Φιλική συμβουλή: Προσπάθησε να καταλάβεις αυτά που είναι γραμμένα από πάνω, και να μην φοβηθείς την [b]C++[/b] όταν θα την δεις για πρώτη φορά. Όσο θα προχωράς προς τα πάνω, πολλά πράγματα θα αρχίσουν να γίνονται δύσκολα για να εξηγηθούν απλά. Συνήθισέ το, έχει σημασία. Αν όχι τώρα, [i]ίσως[/i] να το ξανασκεφτείς αυτό κάποια στιγμή.
:-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
Hazard
bit level
bit level
Posts: 14
Joined: Fri Oct 28, 2016 4:48 pm
Academic status: 1st year
Gender:

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

Post by Hazard » Sun Apr 09, 2017 2:41 pm

Στην ασκηση με τις υπηρεσιες που μας εβαλε για το πασχα,μπορει κανεις να μου εξηγησει ποια ειναι τα συμβολαια,ποιες οι υπηρεσιες και ποια απο αυτα θελει να κανουμε classes?Εχω μπλεχτει με την εκφωνηση.
User avatar
Hermes
bit level
bit level
Posts: 30
Joined: Thu Dec 15, 2016 6:17 pm
Academic status: 1st year
Gender:

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

Post by Hermes » Tue Apr 11, 2017 10:08 am

Πως υπολογιζουμε αυτα που ζηταει στα δυο τελευταια μπουλετακια στο Γ ερωτημα;
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 11, 2017 3:07 pm

Hermes wrote:Πως υπολογιζουμε αυτα που ζηταει στα δυο τελευταια μπουλετακια στο Γ ερωτημα;
Νομίζω ότι και τα δύο υπολογίζονται με τις 4 απλές, βασικές πράξεις.

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

HINT: Δες και το σημείο της εργασίας που αναφέρει κάτι για ποσοστά.
"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
Hermes
bit level
bit level
Posts: 30
Joined: Thu Dec 15, 2016 6:17 pm
Academic status: 1st year
Gender:

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

Post by Hermes » Tue Apr 11, 2017 5:41 pm

Georgilakis Antonios wrote:
Hermes wrote:Πως υπολογιζουμε αυτα που ζηταει στα δυο τελευταια μπουλετακια στο Γ ερωτημα;
Νομίζω ότι και τα δύο υπολογίζονται με τις 4 απλές, βασικές πράξεις.

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

HINT: Δες και το σημείο της εργασίας που αναφέρει κάτι για ποσοστά.
Ολα αυτα τα εχω υποψη μου, αλλα επειδη δεν εχω ιδεα απο λογαριασμους κινητων, δεν ξερω ποια ειναι η εξισωση για καθε ενα απο αυτα
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 11, 2017 6:59 pm

Hermes wrote:Ολα αυτα τα εχω υποψη μου, αλλα επειδη δεν εχω ιδεα απο λογαριασμους κινητων, δεν ξερω ποια ειναι η εξισωση για καθε ενα απο αυτα
Ας το πάμε αλλιώς:

Έστω λοιπόν ότι εσύ είσαι ένας πάροχος κινητής τηλεφωνίας και Internet, και έχεις ένα πρόγραμμα διαχείρισης λογαριασμών/συμβολαίων. Έστω επίσης ότι έχεις εισάγει στο πρόγραμμά σου το εξής συμβόλαιο για την υπηρεσία "Κινητό Internet":

Συμβόλαιο 1:
1GB mobile data/μήνα (δωρεάν), με χρέωση 0.02€/ΜΒ μετά το πέρας του ορίου. (Χαρακτηριστικά συμβολαίου)
[...]
Συμβόλαιο Ν: (...)

Είμαι ένας πελάτης που ενδιαφέρεται να χρησιμοποιήσει αυτή την υπηρεσία που παρέχεις, αγοράζοντας το συμβόλαιο 1. Το αγοράζω λοιπόν (καταγράφω τα στοιχεία μου και το συμβόλαιο που έχω επιλέξει στο πρόγραμμα), και τον πρώτο μήνα ενημερώνω τα στατιστικά μου και αναφέρω ότι έχω χρησιμοποιήσει 3GB mobile data. Το πρόγραμμά σου θα πρέπει να μου τυπώσει ότι πρέπει να πληρώσω 40.96€ (ολικό κόστος). Αν τώρα υποθέσουμε ότι έχω 30% έκπτωση στο συμβόλαιό μου (από εκφώνηση), θα πληρώσω 28.67€ (ολικό κόστος μετά από έκπτωση).

Ανάλογα λοιπόν θα υλοποιήσεις το πρόγραμμα για τα ζητούμενα της εκφώνησης.
Επίσης, για "μεγαλύτερη σιγουριά" και για απορίες μπορείς να στείλεις e-mail και στον διδάσκοντα.
Spoiler: εμφάνιση/απόκρυψη
[b][u]Προσοχή[/u]: Πάντα υπάρχει και η πιθανότητα του ανθρώπινου σφάλματος σε όλα αυτά που αναγράφονται από πάνω.[/b]
Last edited by Georgilakis Antonios on Tue Apr 11, 2017 7:16 pm, edited 1 time in total.
"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
Hermes
bit level
bit level
Posts: 30
Joined: Thu Dec 15, 2016 6:17 pm
Academic status: 1st year
Gender:

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

Post by Hermes » Tue Apr 11, 2017 7:16 pm

το ολικο κοστος πως το βρηκες; Επισης εχω και αλλη μια ερωτηση, θα ηταν σωστο αυτο το τμημα κωδικα;

Code: Select all

 private void setMonthlyUsageStatistics() {
		if (theService instanceof ContractProgram) {
			monthlyUsageStatistics = theService.getPrice()*0.20;
		} else if (theService instanceof CardContract) {
			monthlyUsageStatistics = theService.getPrice()*0.25;
		} else {
			monthlyUsageStatistics = theService.getPrice()*0.30;
		}
	}
οπου monthlyUsageStatistics τα μηνιαια στατιστικα χρησης
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 11, 2017 7:23 pm

Hermes wrote:το ολικο κοστος πως το βρηκες; Επισης εχω και αλλη μια ερωτηση, θα ηταν σωστο αυτο το τμημα κωδικα;

Code: Select all

 private void setMonthlyUsageStatistics() {
		if (theService instanceof ContractProgram) {
			monthlyUsageStatistics = theService.getPrice()*0.20;
		} else if (theService instanceof CardContract) {
			monthlyUsageStatistics = theService.getPrice()*0.25;
		} else {
			monthlyUsageStatistics = theService.getPrice()*0.30;
		}
	}
οπου monthlyUsageStatistics τα μηνιαια στατιστικα χρησης
Το αν είναι σωστό η όχι εξαρτάται από όλη την δομή του προγράμματός σου. Ο κώδικά σου θα πρέπει να είναι γραμμένος έτσι, ώστε να οδηγεί σε σωστή ιεραρχία κλάσεων με όσο το δυνατόν μεγαλύτερη αφαίρεση και συγκέντρωση πληροφορίας προς τα πάνω. Αν τώρα σε κάποια σημεία κάνεις συμβάσεις που δεν υπάρχει άλλος τρόπος να αποφύγεις, φρόντισε τουλάχιστον να κάνεις πλήρως κατανοητό σε σχόλια τον λόγο ή τους λόγους που σε οδήγησαν εκεί. Προσωπική συμβουλή. Οτιδήποτε το οποίο θα μπορούσε να γραφεί με άλλη αρχιτεκτονική δόμησης κώδικα και θα μπορούσε να αποφευχθεί, δίνει αμέσως την προτροπή στον διορθωτή να αφαιρέσει μονάδες.

Όσο για το πρώτο ερώτημά σου, ήλπιζα ότι το απάντησα με τρόπο που "βγάζει μάτια". :-D

EDIT 1: Κάτι που θα μπορούσες να κάνεις είναι να δεις κάθε "λογικό υποκείμενο" της εκφώνησης (με τα χαρακτηριστικά του), ως μια κλάση με μεθόδους και περιεχόμενο. Φαντάσου ότι θες να μάθεις την τιμή ενός χαρακτηριστικού. Απλά στέλνεις εντολή στο υποκείμενο-κλάση δια της μεθόδου. Και όλα αυτά σύμφωνα με ένα "λογικό" διαχωρισμό, και χωρίς να το παρακάνεις φυσικά. Υπ' όψη ότι πολλά πράγματα ανάμεσα στα "λογικά υποκείμενα"-αντικείμενα είναι κοινά.

EDIT 2: Ενδέχεται να υπάρχουν "λογικά υποκείμενα"-αντικείμενα, τα οποία έχουν κοινές "πράξεις", αλλά με διαφορετική εκτέλεση για το καθένα. Μήπως αυτό μας εισάγει στην έννοια του abstract method? :-D
Last edited by Georgilakis Antonios on Tue Apr 11, 2017 7:38 pm, edited 3 times in total.
"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
Hermes
bit level
bit level
Posts: 30
Joined: Thu Dec 15, 2016 6:17 pm
Academic status: 1st year
Gender:

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

Post by Hermes » Tue Apr 11, 2017 7:30 pm

Οκ, με βοηθησες πολυ, ευχαριστω παρα πολυ!
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 » Tue Apr 11, 2017 9:27 pm

Hermes wrote:το ολικο κοστος πως το βρηκες; Επισης εχω και αλλη μια ερωτηση, θα ηταν σωστο αυτο το τμημα κωδικα;
Spoiler: εμφάνιση/απόκρυψη
[code] private void setMonthlyUsageStatistics() { if (theService instanceof ContractProgram) { monthlyUsageStatistics = theService.getPrice()*0.20; } else if (theService instanceof CardContract) { monthlyUsageStatistics = theService.getPrice()*0.25; } else { monthlyUsageStatistics = theService.getPrice()*0.30; } }[/code]
οπου monthlyUsageStatistics τα μηνιαια στατιστικα χρησης
Remember kids,

Code: Select all

instanceof
is bad Object-Oriented coding.

Προτίμησε κάτι τέτοιο:

Code: Select all

// I will appreciate this one day
public interface Service {
	double getPrice();

	/*
		default defines default behaviour inside an interface
		Since Java 8.0	
	*/
	default double getMonthlyUsageStats() {
		return this.getPrice() * 0.30;
	}
}

public ContractProgram extends Service {
	double getPrice() {
	// impl.
	}
	double getMonthlyUsageStats() {
	// impl.
		return this.getPrice()*0.20;
	}
}
public CardContract extends Service {
	double getPrice() {
	// impl.
	}
	double getMonthlyUsageStats() {
	// impl.
		return this.getPrice()*0.25;
	}
}
ώστε να μπορείς απλά να κάνεις αυτό.

Code: Select all

// ...
private Service theService = new CardContract(); // or something... 
// ...
monthlyUsageStatistics = theService.getMonthlyUsageStats();
Image<-- My profile playlists
Locked

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