georgemarios Δημοσ. 17 Φεβρουαρίου 2008 Δημοσ. 17 Φεβρουαρίου 2008 ε βασει των τελευταιων μπορεις να εχεις το εξης, να κανεις κλασεις-παιδια της XreosiKinitou (ή Packard ή όπως αλλιως) οι οποιες απλα δινουν διαφορετικη τιμη στα timi_per_sms και timi_per_tilefono_minute. πχ > class XreosiKinitou { [indent]float xreos_sms; float xreos_tilefona; float timi_per_sms; float timi_per_tilefono_minute; int numOfSMS; float numOfMinutesTalked; + οτι αλλο στοιχειο θες.... } [/indent] class ContractKinito : public XreosiKinitou { [indent]ContractKinito( ) {[indent]timi_per_sms = 0.10; timi_per_tilefono_minute = όσο ειναι.... [/indent] } [/indent]} // και αντιστοιχα class KartoKinito : public XreosiKinitou { [indent]KartoKinito ( ) {[indent]timi_per_sms = καποια τιμη.... timi_per_tilefono_minute = όσο ειναι.... [/indent] } [/indent]} αρα αν εχεις καπου μια συναρτηση που ας πουμε, παιρνει σαν ορισμα μια XreosiKinitou όπως πχ > float CalculateXreos( XreosiKinitou* xr) { float xreos; xreos += xr->numSms * xr->timi_per_sms; etc.... } τοτε αν στο μαιν φτιαξεις τα 2 αντικειμενα που λες > int main( .... ) { ContractKinito myContract; KartoKinito myKartokinito; // τα γεμιζεις καπου εδω.... // και εδω καλεις την CalculateXreos // βλεπεις πως ενω η μια κλαση ειναι τυπου ContractKinito και // η αλλη KartoKinito, περνουν σαν ορισματα στην ιδια // συναρτηση CalculateXreos γιατι κληρονομουν απο την ιδια κλαση.... float xreos_symvolaiou = CalculateXreos( &myContract ); float xreos_kartas = CalculateXreos( &myKartokinito); }
georgemarios Δημοσ. 17 Φεβρουαρίου 2008 Δημοσ. 17 Φεβρουαρίου 2008 γραφω αργα και δεν ειχα δει το τελευταιο σου μηνυμα float xreos_sms;float xreos_tilefona; float timi_per_sms; float timi_per_tilefono_minute; το ένα αφορά το συμβόλαιο κσι το άλλο την καρτοκινητή?? και τα αντικείμενα που θέλει να δημιουργήσουμε στο κυρίως πρόγραμμα? Τί είναι το 0.5? Όχι, τη δομή του προγράμματος στην εξήγησα...απειδή μας έδινε κάποια κομματάκια από τις κλάσεις... θέλει... Μαμά κλάση ονόματι Packard Παιδιά κλάσεις: μία για καρτοκινητή και μία για σύνδεση Το είδες το τελευταίο μνμ που είχα γράψει?? το προηγούμενο από αυτό εννοώ...το εξηγώ αναλυτικά...μάλλον θα το έγραψα όταν ήδη είχες ξεκινήσει να απαντάς... 0.5 = μισο λεπτο = 30 δευτερα εγω οπως καταλαβες,προσπαθω να σου δοσω τη γενικη ιδεα, δε εχει νοημα να σου τη λυσω ξεκινα, προσπαθησε να γραψεις κατι δικο σου και βαλε το να το συζητησουμε, αλλιως δε γινεται.
mairy87 Δημοσ. 17 Φεβρουαρίου 2008 Μέλος Δημοσ. 17 Φεβρουαρίου 2008 float xreos_sms; float xreos_tilefona; float timi_per_sms; float timi_per_tilefono_minute; Τί διαφορά έχουνε τα πάνω 2 float από τα 2 κάτω?? Στα κάτω βάζουμε τις τιμές χρέωσης...Τα 2 πάνω, πως τα χρησιμοποιούμε?? Τον κώδικα πως τον βάζεις σε παράθυρο με μπάρα (εδώ στο φόρουμ)??
georgemarios Δημοσ. 17 Φεβρουαρίου 2008 Δημοσ. 17 Φεβρουαρίου 2008 τον κωδικα τον βαζω αναμεσα σε [ c o d e ] και [/ c o d e ] χωρις τα κενα τα float xreos_sms; float xreos_tilefona; ειναι και καλα ποσο χρεος εχει μαζευτει μεχρι στιγμης απο τα sms και τηλεφωνα αντιστοιχα.
mairy87 Δημοσ. 17 Φεβρουαρίου 2008 Μέλος Δημοσ. 17 Φεβρουαρίου 2008 γραφω αργα και δεν ειχα δει το τελευταιο σου μηνυμα εγω οπως καταλαβες,προσπαθω να σου δοσω τη γενικη ιδεα, δε εχει νοημα να σου τη λυσω ξεκινα, προσπαθησε να γραψεις κατι δικο σου και βαλε το να το συζητησουμε, αλλιως δε γινεται. Προγραμματιστής και γράφεις αργά??Με εκπλήσεις...(καλά λένε, κανείς δεν είναι τέλειος...) Πέρα από την πλάκα και εγώ αυτό θέλω, προκειμένου να καταλάβω τι παίζει... Γιατι αν βάλει κάτι παρεμφερή....τη κάτσαμε... οπότε πρέπει να καταλάβω τι παίζει γενικά με τις κλάσεις...και γενικά σύστημα χρεώσεων...όχι για την εξέταση, αλλά γενικά γιατί με ενδιαφέρουν... Απλά φοβάμαι μη μου φύγεις...γι αυτό και κάνω γρήγορες ερωτήσεις για να σε προλάβω...τώρα μελετάω τον κώδικα που μου έστειλες...ότι απορίες θα σου πω...
mairy87 Δημοσ. 17 Φεβρουαρίου 2008 Μέλος Δημοσ. 17 Φεβρουαρίου 2008 Κάτσε γιατί σε έχασα... λες: > class XreosiKinitou { float xreos_sms; float xreos_tilefona; float timi_per_sms; float timi_per_tilefono_minute; int numOfSMS; float numOfMinutesTalked; + οτι αλλο στοιχειο θες.... } class ContractKinito : public XreosiKinitou { ContractKinito( ) { timi_per_sms = 0.10; timi_per_tilefono_minute = όσο ειναι.... } } // και αντιστοιχα class KartoKinito : public XreosiKinitou { KartoKinito ( ) { timi_per_sms = καποια τιμη.... timi_per_tilefono_minute = όσο ειναι.... } } τώρα αυτά είναι αρχεία .cpp ή .h ?? Αν θες, πριν φύγεις από το φόρουμ, ρίξε μια ειδοποίηση να το ξέρω...οκ? Thanks!
georgemarios Δημοσ. 17 Φεβρουαρίου 2008 Δημοσ. 17 Φεβρουαρίου 2008 ποια η διαφορα cpp και h? οταν κανεις include ενα h σε ενα cpp ξερεις τι γινεται? Ακριβως οτι θα γινοταν και αν εκανες copy-paste τα περιεχομενα του h στο cpp στο σημειο που το κανεις include. Αυτο. Μονο. Αρα? Τι ειναι? h? ή cpp? επι του προκειμενου, εχει σημασια? (θα ειχε σημασια αν το προγραμμα σου αποτελουταν απο πολλα cpp αρχεια που ενδεχομενως να χρειαζονταν τα ιδια πραγματα οποτε θα το οργανωνες καπως καλυτερα με h/cpp files)
mairy87 Δημοσ. 17 Φεβρουαρίου 2008 Μέλος Δημοσ. 17 Φεβρουαρίου 2008 Έχει σημασία, γιατί αν ζητήσει να του γράψω το .cpp θα πρέπει να ξέρω τι πρέπει να του γράψω...αντίστοιχα για το .h Αυτό που μου έγραψες μια πάω να το πω .cpp μια .h Τα χεις βάλει και τα δύο μαζί?? Πρέπει να ξέρω τη θα του γ΄ραψω σε κάθε περίπτωση....
mairy87 Δημοσ. 17 Φεβρουαρίου 2008 Μέλος Δημοσ. 17 Φεβρουαρίου 2008 Αν πρόσεξες τις ερωτήσεις που σου έδοσα προηγουμένως, ένα ερώτημα είναι να φτιάξω τα πρώτυπα πολυμορφικών συναρτήσων και ένα άλλο να τις υλοποιήσω τις πολυμορφικές συναρτήσειςεάν το κρίνω απαραίτητο... Αυτό που μου λες τι από τα 2 είναι?? Άστο...πρέπει να είπα κοτσάνα...Αυτά δεν έχουν σχέση με τις πολυμορφικές συναρτήσεις...αυτά είναι δημιουργία κλάσεων...απλά, τα διαβάζω πεταχτά για να σου μαζέψω γρήγορα τις απορίες μου...και μπερδεύτικα
mairy87 Δημοσ. 17 Φεβρουαρίου 2008 Μέλος Δημοσ. 17 Φεβρουαρίου 2008 >class ContractKinito : public XreosiKinitou { ContractKinito( ) { timi_per_sms = 0.10; timi_per_tilefono_minute = όσο ειναι.... } } λες... ContractKinito( ) αυτό στην ουσία είναι ο δημιουργός άρα μήπως να το έβαζα αυτόνομα στο .h και όλο το υπόλοιπο στο .cpp ???
mairy87 Δημοσ. 17 Φεβρουαρίου 2008 Μέλος Δημοσ. 17 Φεβρουαρίου 2008 >float CalculateXreos( XreosiKinitou* xr) { float xreos; xreos += xr->numSms * xr->timi_per_sms; etc.... } Αυτό τώρα είναι μια απλή συνάρτηση?? Αν θέλω να την κάνω πολυμορφική συνάρτηση?? Και αν θέλω να φτιάξω και το πρότυπό της?? Θα πρέπει να αναφρθώ γενικά στη μαμά-κλάση και όχι γενικά όπως εσύ εδω?? Τα μνμ που γράφω τα πειράζω και κάνω αλλαγές...ελπίζω να τις βλέπεις...
mairy87 Δημοσ. 17 Φεβρουαρίου 2008 Μέλος Δημοσ. 17 Φεβρουαρίου 2008 > ContractKinito myContract; KartoKinito myKartokinito; Να υποθέσω πως το: ContractKinito είναι το όνομα της κλάσης μου και το :myContract είναι το αντικείμενο μου που βασίζεται στην αντίστοιχη κλάση?? Παίρνει στοιχεία από την κλάση μου ή μέσω δείκτη θα δείχνει εκεί?? Δηλαδή στην ερώτηση για δημιουργία 2 αντικειμένων...μόνο αυτές οι δύο γραμμές χρειάζονται?? Πως τα γεμίζω??
georgemarios Δημοσ. 17 Φεβρουαρίου 2008 Δημοσ. 17 Φεβρουαρίου 2008 ok ok να κανουμε ενα ξεκαθαρισμα Κάτσε γιατί σε έχασα...λες: > class XreosiKinitou { float xreos_sms; float xreos_tilefona; float timi_per_sms; float timi_per_tilefono_minute; int numOfSMS; float numOfMinutesTalked; + οτι αλλο στοιχειο θες.... } class ContractKinito : public XreosiKinitou { ContractKinito( ) { timi_per_sms = 0.10; timi_per_tilefono_minute = όσο ειναι.... } } // και αντιστοιχα class KartoKinito : public XreosiKinitou { KartoKinito ( ) { timi_per_sms = καποια τιμη.... timi_per_tilefono_minute = όσο ειναι.... } } τώρα αυτά είναι αρχεία .cpp ή .h ?? Αν θες, πριν φύγεις από το φόρουμ, ρίξε μια ειδοποίηση να το ξέρω...οκ? Thanks! αυτα, καλlιστα μπορουν να μπουν στο h >class ContractKinito : public XreosiKinitou { ContractKinito( ) { timi_per_sms = 0.10; timi_per_tilefono_minute = όσο ειναι.... } } λες... ContractKinito( ) αυτό στην ουσία είναι ο δημιουργός άρα μήπως να το έβαζα αυτόνομα στο .h και όλο το υπόλοιπο στο .cpp ??? ναι, ο δημιουργος ειναι μπορεις να το βαλεις ως εχει στο h και ετσι ο δημιουργος θα ειναι inline (google για το τι ειναι inline συναρτηση) είτε να το κανεις ως > // sto .h file class ContractKinito : public XreosiKinitou { ContractKinito( ); } //------------------------------- // sto cpp file ContractKinito::ContractKinito( ) { timi_per_sms = 0.10; timi_per_tilefono_minute = όσο ειναι.... } το ιδιο ισχυει και για τις υπολοιπες κλασσεις Αν πρόσεξες τις ερωτήσεις που σου έδοσα προηγουμένως, ένα ερώτημα είναι να φτιάξω τα πρώτυπα πολυμορφικών συναρτήσων και ένα άλλο να τις υλοποιήσω τις πολυμορφικές συναρτήσειςεάν το κρίνω απαραίτητο...Αυτό που μου λες τι από τα 2 είναι?? λοιπον, λοιπον, λοιπον εχουμε 2 περιπτωσεις που πρεπει να ξεκαθαρισεις σε ποια απο τις δυο ειμαστε η μια ειναι πως ο τροπος υπολογισμου του λογαριασμου γινεται με τον ιδιο τροπο ειτε προκειται και καρτοκινητη ειτε για συμβολαιο οποτε το μονο που διαφοροποιειται ειναι οι τιμες η δευτερη ειναι πως αναλογα τι ειναι (καρτα/συμβολαιο) εχεις και διαφορετικη φορμουλα υπολογισμου (πχ στο συμβολαιο συνυπολογιζεις και ενα παγιο ενω στη καρτα οχι) Στη πρωτη περιπτωση, την CalculateXreos την κανεις όπως σου εδειξα, στο h file θα βαλεις το πρωτοτυπο της, δηλ >float CalculateXreos( XreosiKinitou* xr); και στο cpp το σωμα της > float CalculateXreos( XreosiKinitou* xr){float xreos; xreos += xr->numSms * xr->timi_per_sms; etc.... } Στη δευτερη περιπτωση, όπου θα χρειαστεις διαφορετικο κωδικα αναλογα τον τυπο της χρεωσης, θα εχεις 2 versions της CalculateXreos του στυλ > float CalculateXreos( [b]ContractKinito[/b]* xr); float CalculateXreos( [b]KartoKinito[/b]* xr); και αντιστοιχα 2 σωματα στο cpp
georgemarios Δημοσ. 17 Φεβρουαρίου 2008 Δημοσ. 17 Φεβρουαρίου 2008 > ContractKinito myContract; KartoKinito myKartokinito; Να υποθέσω πως το: ContractKinito είναι το όνομα της κλάσης μου και το :myContract είναι το αντικείμενο μου που βασίζεται στην αντίστοιχη κλάση?? Παίρνει στοιχεία από την κλάση μου ή μέσω δείκτη θα δείχνει εκεί?? Δηλαδή στην ερώτηση για δημιουργία 2 αντικειμένων...μόνο αυτές οι δύο γραμμές χρειάζονται?? Πως τα γεμίζω?? με αυτη σου την ερωτηση μου λες πως εχεις πολυ μικρη επαφη με τη c++ πραγμα που σημαινει πως το εχεις ψαξει ελαχιστα. Να σε βοηθησω σε κατι που δε καταλαβες οκ (ας πουμε το κομματι template classes ειναι καπως...) αλλα εσυ εχεις πολυ βασικες ελλειψεις. Καταλαβες τι εννοουσα για τα 2/3 αυτων που δε γραφουν? Πως θα γραψεις ΟΤΙ ασκηση κα να βαλει αν με ρωτας "Να υποθέσω πως το: ContractKinito είναι το όνομα της κλάσης μου και το :myContract είναι το αντικείμενο μου που βασίζεται στην αντίστοιχη κλάση?" Δεν ειναι χαζη ερωτηση, ειναι φυσιολογικη, αλλα ειναι πολυ primitive σαν θεμα.... PS η απαντηση στο ερωτημα ειναι το ContractKinito είναι το όνομα της κλάσης και το myContract ειναι το ονομα της μεταβλητης τυπου ContractKinito. Το πιανεις? Οταν οριζεις μια κλαση, στην ουσια οριζεις ενα νεο τυπο δεδομενων, όπως ειναι το int, float, char, string.... και αφου την ορισεις μπορεις να δημιουργησεις μεταβλητες που ειναι όπως λεμε "instances" αυτης της κλασσης
mairy87 Δημοσ. 17 Φεβρουαρίου 2008 Μέλος Δημοσ. 17 Φεβρουαρίου 2008 ok ok να κανουμε ενα ξεκαθαρισμα >Παράθεση: Αρχικό μήνυμα απο mairy87 Εμφάνιση μηνυμάτων Κάτσε γιατί σε έχασα... λες: Κώδικας: class XreosiKinitou { float xreos_sms; float xreos_tilefona; float timi_per_sms; float timi_per_tilefono_minute; int numOfSMS; float numOfMinutesTalked; + οτι αλλο στοιχειο θες.... } class ContractKinito : public XreosiKinitou { ContractKinito( ) { timi_per_sms = 0.10; timi_per_tilefono_minute = όσο ειναι.... } } // και αντιστοιχα class KartoKinito : public XreosiKinitou { KartoKinito ( ) { timi_per_sms = καποια τιμη.... timi_per_tilefono_minute = όσο ειναι.... } } τώρα αυτά είναι αρχεία .cpp ή .h ?? Αν θες, πριν φύγεις από το φόρουμ, ρίξε μια ειδοποίηση να το ξέρω...οκ? Thanks! αυτα, καλlιστα μπορουν να μπουν στο h Ναι, αλλά εκχωρείς τιμές... στο .h εκχωρούμε τιμές?? Εγώ νόμιζα πως αυτό το κάνουμε στο .cpp Λάθος?
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.