Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γίνεται αλλά πας να κάνεις πατάτα.

 

Η όλη ιδέα εδώ είναι να χρησιμοποιήσεις πολυμορφισμό. Δηλαδή, θα πρέπει να υπάρχει μια class organism από την οποία θα κάνουν άμεσα ή έμμεσα derive όλες οι κλάσεις σου που αντιπροσωπεύουν οργανισμούς.

 

Το οικοσύστημά σου θα έχει (has-a, aggregate) ένα vector<organism*> -- προσοχή, pointer από organism αλλιώς δε θα μπορέσεις να κάνεις πολυμορφισμό.

 

BTW, και συγγνώμη για το άσχετο αλλά δε μπόρεσα να συγκρατηθώ: :-D

How many object-oriented programmers does it take to change a light bulb?

 

 

None -- you just tell the bulb to change itself.

 

 

 

Δεν νομίζω ότι ο vector από instances είναι ότι καλύτερο σε αυτό το project.

 

Μπορεί το οικοσύστημα να αλλάζει, ναι σαφώς, αλλά οι "κύριες μονάδες χρήσης" της όλης οντολογίας είναι οι οργανισμοί.

 

Τι εννοώ.

 

 

Ένας οργανισμός θα αναπτυχθεί, εξελιχθεί, φάει και ό,τι άλλο βάσει των συνθηκών που επικρατούν στο οικοσύστημα που είναι.

 

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

 

Έτσι, προτείνω οι οργανισμοί να ανήκουν σε ένα οικοσύστημα, να γίνονται οι αλλαγές στο οικοσύστημα και, είτε με look up κάθε "τόσο" είτε όταν γίνει μία κλήση μεθόδου στον οργανισμό, ο οργανισμός να κοιτάει τι παίζει στο οικοσύστημα και αναλόγως να κάνει τις επιλογές του.

 

 

Υ.Γ. Καλό το ανέκδοτο!

Δημοσ.

Δεν νομίζω ότι ο vector από instances είναι ότι καλύτερο σε αυτό το project.

 

[...]

 

Έτσι, προτείνω οι οργανισμοί να ανήκουν σε ένα οικοσύστημα, να γίνονται οι αλλαγές στο οικοσύστημα και, είτε με look up κάθε "τόσο" είτε όταν γίνει μία κλήση μεθόδου στον οργανισμό, ο οργανισμός να κοιτάει τι παίζει στο οικοσύστημα και αναλόγως να κάνει τις επιλογές του.

 

Vector από pointers, όχι instances (δε θα γινόταν εξάλλου από instances και να διατηρείται πολυμορφική συμπεριφορά).

 

Δεν είμαι σίγουρος τι ακριβώς περιγράφεις. Αυτό που έχω στο μυαλό μου δεν είναι καθόλου διαφορετικού από το main loop οποιουδήποτε παιχνιδιού ή άλλης παρόμοιας εφαρμογής: έχεις ένα collection από actors και κάποια "inputs του περιβάλλοντος", και κάθε όποτε θέλεις (turn-based? timeloop?) κάνεις iterate το collection, αλληλεπιδράς με κάθε actor (εδώ κολλάει ο πολυμορφισμός), ενημερώνεις το state σου και πάλι απ' την αρχή.

Δημοσ.

Vector από pointers, όχι instances (δε θα γινόταν εξάλλου από instances και να διατηρείται πολυμορφική συμπεριφορά).

 

Δεν είμαι σίγουρος τι ακριβώς περιγράφεις. Αυτό που έχω στο μυαλό μου δεν είναι καθόλου διαφορετικού από το main loop οποιουδήποτε παιχνιδιού ή άλλης παρόμοιας εφαρμογής: έχεις ένα collection από actors και κάποια "inputs του περιβάλλοντος", και κάθε όποτε θέλεις (turn-based? timeloop?) κάνεις iterate το collection, αλληλεπιδράς με κάθε actor (εδώ κολλάει ο πολυμορφισμός), ενημερώνεις το state σου και πάλι απ' την αρχή.

 

 

Εάν θα είναι pointers ή όχι είναι θέμα γλώσσας (pointer δεν υπάρχει στην Java, με την έννοια της C++). Αυτό εννοούσα instances. Προφανώς και θα είναι "αναφορά".

 

Δεν διαφωνώ...

 

Μόνο που σαν actor προτείνω να μην είναι το οικοσύστημα. Αυτό δεν σημαίνει ότι δεν θα μπορείς να αλλάξεις - τροποποιήσεις κάποιες παραμέτρους αλλά δεν θα είναι "παίκτης". Οι οργανισμοί θα είναι αυτοί.

 

Έτσι, αντί το μοντέλο να στηθεί με aggregation, one to many - οικοσύστημα σε οργανισμούς, θα πρότεινα το aggregation από οργανισμό σε οικοσύστημα (και έτσι θα μπορεί κάποιος οργανισμός να ανήκει σε διαφορετικά συστήματα, π.χ. αμφίβιος, π.χ. ό,τι άλλο).

 

Το ξέρω ότι είναι παράδοξο... :P αλλά στο συγκεκριμένο μου άρεσε :D

Δημοσ.

το εχω κανει ετσι οπωσ μου λετε εξαρχησ..θελω να το κανω με pointer απο organism απλωσ η αληθεια ειναι πωσ δεν τουσ καταλαβαινω καθολου και προσπαθουσα να τουσ αποφυγω(αν μποριται να μου δωσετε ενα καλο παραδειγμα :rolleyes: :rolleyes: ) ..ξερω σας εχω πρηξει αλλα εχουμε κανει πολυ λιγο c++ και προσπαθω να δω τι παιζει :-D

Δημοσ.

το εχω κανει ετσι οπωσ μου λετε εξαρχησ..θελω να το κανω με pointer απο organism απλωσ η αληθεια ειναι πωσ δεν τουσ καταλαβαινω καθολου και προσπαθουσα να τουσ αποφυγω(αν μποριται να μου δωσετε ενα καλο παραδειγμα :rolleyes: :rolleyes: ) ..ξερω σας εχω πρηξει αλλα εχουμε κανει πολυ λιγο c++ και προσπαθω να δω τι παιζει :-D

 

με poiners

>

#include <iostream>
#include <vector>


class A
{
public:
virtual void Foo()
{
	std::cout<<"A\n";
}
};

class B 
: public A
{
public:
virtual void Foo()
{
	std::cout<<"B\n";
}
};

int main(int, char**)
{
std::vector<A*> vec;
vec.push_back(new A);
vec.push_back(new ;
vec[0]->Foo();
vec[1]->Foo();
delete vec[0];
delete vec[1];
return 0;
}

 

 

 

με smart pointers

>

#include <iostream>
#include <vector>


class A
{
public:
virtual void Foo()
{
	std::cout<<"A\n";
}
};

class B 
: public A
{
public:
virtual void Foo()
{
	std::cout<<"B\n";
}
};

int main(int, char**)
{
std::vector<std::shared_ptr<A> > vec;
vec.push_back(std::shared_ptr<A>(new A));
vec.push_back(std::shared_ptr<B>(new );
vec[0]->Foo();
vec[1]->Foo();
return 0;
}

 

Δημοσ.

το εχω κανει ετσι οπωσ μου λετε εξαρχησ..θελω να το κανω με pointer απο organism απλωσ η αληθεια ειναι πωσ δεν τουσ καταλαβαινω καθολου και προσπαθουσα να τουσ αποφυγω(αν μποριται να μου δωσετε ενα καλο παραδειγμα :rolleyes: :rolleyes: ) ..ξερω σας εχω πρηξει αλλα εχουμε κανει πολυ λιγο c++ και προσπαθω να δω τι παιζει :-D

 

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

 

Δε μπορώ να καταλάβω με την καμία, αν είναι έτσι όπως τα λες, πώς είναι δυνατόν να δίνουν τέτοιες ασκήσεις (γιατί βασικά η άσκηση είναι δύσκολη για επίπεδο "έχω κάνει 10-15 μαθήματα") χωρίς να έχουν διδάξει πρώτα τα εντελώς απαραίτητα. Όχι ότι αν τα είχαν διδάξει δηλαδή θα χαμπάριαζε η συντριπτική πλειοψηφία, αλλά τουλάχιστον στα χαρτιά θα ήταν εντάξει.

 

Εάν θα είναι pointers ή όχι είναι θέμα γλώσσας (pointer δεν υπάρχει στην Java, με την έννοια της C++). Αυτό εννοούσα instances. Προφανώς και θα είναι "αναφορά".

 

Δεν διαφωνώ...

 

Μόνο που σαν actor προτείνω να μην είναι το οικοσύστημα. Αυτό δεν σημαίνει ότι δεν θα μπορείς να αλλάξεις - τροποποιήσεις κάποιες παραμέτρους αλλά δεν θα είναι "παίκτης". Οι οργανισμοί θα είναι αυτοί.

 

Έτσι, αντί το μοντέλο να στηθεί με aggregation, one to many - οικοσύστημα σε οργανισμούς, θα πρότεινα το aggregation από οργανισμό σε οικοσύστημα (και έτσι θα μπορεί κάποιος οργανισμός να ανήκει σε διαφορετικά συστήματα, π.χ. αμφίβιος, π.χ. ό,τι άλλο).

 

Το ξέρω ότι είναι παράδοξο... :P αλλά στο συγκεκριμένο μου άρεσε :D

 

Got it για τα instances, απλά η ερώτηση είναι για C++ οπότε το μετέφρασα ανάλογα.

 

Το ανάποδο aggregation (άσχετο: νομίζω πως αυτός ο όρος δεν είναι σωστός εδώ γιατί ο οργανισμός δεν ΕΧΕΙ οικοσύστημα, αλλά εξαρτάται από οικοσύστημα -- καλύτερα να το λέμε dependency) είναι μια πολύ ενδιαφέρουσα ιδέα (αν και εφόσον το οικοσύστημα μοντελοποιεί το περιβάλλον, δε νομίζω πως γίνεται κάποιος οργανισμός να ανήκει σε 2 ταυτόχρονα) αλλά είναι πολύ δυσκολότερο σαν υλοποίηση γιατί απαιτεί εμπειρία design, πράγμα που δεν το συζητάμε καν (εδώ αμάν κάνουμε να χρησιμοποιήσουμε pointers).

Δημοσ.

Δε μπορώ να καταλάβω με την καμία, αν είναι έτσι όπως τα λες, πώς είναι δυνατόν να δίνουν τέτοιες ασκήσεις (γιατί βασικά η άσκηση είναι δύσκολη για επίπεδο "έχω κάνει 10-15 μαθήματα") χωρίς να έχουν διδάξει πρώτα τα εντελώς απαραίτητα. Όχι ότι αν τα είχαν διδάξει δηλαδή θα χαμπάριαζε η συντριπτική πλειοψηφία, αλλά τουλάχιστον στα χαρτιά θα ήταν εντάξει.

 

Ε καλα, c++ ειναι. Το να γραψεις κατι σε c style ειναι καπως απλο, το να γραψεις κατι απλο με c style αλλα με iostream... εκει χανεις τη μπαλα, αντε να εξηγησεις το cout<<"Hey"

 

Νομιζω οτι θα ηταν καλυτερα να μαθαιναν oo με τιποτα java/c# , που ειναι c like και παν απολα δεν εχουν 213412312 συμβολα και περιπλοκο memory managment.

Δημοσ.

Ε καλα, c++ ειναι. Το να γραψεις κατι σε c style ειναι καπως απλο, το να γραψεις κατι απλο με c style αλλα με iostream... εκει χανεις τη μπαλα, αντε να εξηγησεις το cout<<"Hey"

 

Νομιζω οτι θα ηταν καλυτερα να μαθαιναν oo με τιποτα java/c# , που ειναι c like και παν απολα δεν εχουν 213412312 συμβολα και περιπλοκο memory managment.

 

Συμφωνώ. Σε σχολή πληροφορικής πρέπει IMO να διδάσκεται οπωσδήποτε C (procedural, pointers, memory management, close to the metal programming) και Java (OO, managed) γιατί είναι και οι 2 κάργα portable.

 

H C++ είναι δύσκολο πράγμα γιατί έχει τόσες πολλές ιδιαιτερότητες που πρέπει να μάθεις, ώστε δε νομίζω πως γίνεται να διδάξεις σε άτομα χωρίς εμπειρία παράλληλα με τις έννοιες του OOP.

Δημοσ.

 

 

OFFTOPIC:

+1 κι από μένα για C και Java, τις θεωρώ ιδανικές βάσεις για οτιδήποτε περαιτέρω.

 

 

 

 

Βασικά.... όχι Java για OOP. Απορώ γιατί δεν διδάσκουν Smalltalk. Αρκετά πιο OO από Java και C#. Αφήνω απέξω την C++ γιατί μπορεί κανείς να κάνει τους μηχανισμούς της smalltalk (απαιτεί βέβαια κάποιο overhead αλλά δεν παύει να μπορεί).

 

Επίσης, Objective C. C και Smalltalk παρέα!

 

 

defacer

Μπορεί ένας οργανισμός να ανήκει σε δύο οικοσυστήματα. Π.χ. κύτταρο. Ανήκει στο οικοσύστημα του αίματος, στον άνθρωπο αλλά και στο γενικότερο.

 

Ακόμα, αμφίβιο. Ανήκει και στο υδάτινο οικοσύστημα αλλά και στο χερσαίο.

 

Για αυτό, θεωρώ πως είναι πιο ΟΟ να σχεδιαστεί έτσι, ειδικά και εάν γραφτεί σε γλώσσα Smalltalk ή Objective C, όπου οι οργανισμοί θα στέλνουν μήνυμα στο οικοσύστημα και το οικοσύστημα στους οργανισμούς.

Δημοσ.

Βασικά η Java συνδυάζει πολλά και χρήσιμα: στοχευμένο OOP (δεν πλατιάζει/αποπροσανατολίζει), crossplatform (τρέχει παντού) και επαγγελματικά περιζήτητη (πολλά χρόνια).

Δημοσ.

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

 

Δε μπορώ να καταλάβω με την καμία, αν είναι έτσι όπως τα λες, πώς είναι δυνατόν να δίνουν τέτοιες ασκήσεις (γιατί βασικά η άσκηση είναι δύσκολη για επίπεδο "έχω κάνει 10-15 μαθήματα") χωρίς να έχουν διδάξει πρώτα τα εντελώς απαραίτητα. Όχι ότι αν τα είχαν διδάξει δηλαδή θα χαμπάριαζε η συντριπτική πλειοψηφία, αλλά τουλάχιστον στα χαρτιά θα ήταν εντάξει.

 

 

 

Got it για τα instances, απλά η ερώτηση είναι για C++ οπότε το μετέφρασα ανάλογα.

 

Το ανάποδο aggregation (άσχετο: νομίζω πως αυτός ο όρος δεν είναι σωστός εδώ γιατί ο οργανισμός δεν ΕΧΕΙ οικοσύστημα, αλλά εξαρτάται από οικοσύστημα -- καλύτερα να το λέμε dependency) είναι μια πολύ ενδιαφέρουσα ιδέα (αν και εφόσον το οικοσύστημα μοντελοποιεί το περιβάλλον, δε νομίζω πως γίνεται κάποιος οργανισμός να ανήκει σε 2 ταυτόχρονα) αλλά είναι πολύ δυσκολότερο σαν υλοποίηση γιατί απαιτεί εμπειρία design, πράγμα που δεν το συζητάμε καν (εδώ αμάν κάνουμε να χρησιμοποιήσουμε pointers).

Respect στον Defacer για την παρομοίωση.

Δημοσ.

γεια σασ παιδια..να ρωτησω κατι??για τον χρονο που θελω να περναει πια συναρτηση θα χρησιμοποιησω???συναρτηση<ctime>????

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...