Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Approfondissez Swift avec la POO

    18 août 2019 à 17:56:09

    Bonjour à tous,

    Je suis actuellement sur cette partie du cours : https://openclassrooms.com/fr/courses/4446991-approfondissez-swift-avec-la-programmation-orientee-objet/4497155-concevez-vos-premiers-objets

    J'ai donc ouvert le même projet et cliquer sur le bouton pour avoir le code à gauche et le graphisme à droite, sauf que j'obtiens ceci :

    Et j'ai beau cherché, je ne trouve pas comment l'afficher comme dans le cours.
    Je n'ai que "Live View" et pas "Timeline", sinon j'ai Manuel mais c'est tout... 

    Je suis sur Xcode 10, j'ai essayé sur Xcode 9, même problème.

    Quelqu'un pourrait m'aider ?

    EDIT : C'est bon, après exécution ça s'affiche bien !
    Désolé je débute :s 

    EDIT2 : J'aurai dû aller plus loin dans la vidéo, Ambroise parle justement de la Live View...

    -
    Edité par wlamour 18 août 2019 à 22:44:18

    • Partager sur Facebook
    • Partager sur Twitter
      20 août 2019 à 21:47:56

      Je vous remonte une petite coquille (toute petite :p) du chapitre 3, partie 1.

      class SchoolBus {
      var schoolName = ""
      }

      La propriété schoolName sera disponible dans la classe SchoolBus, mais pas pour les instances de Bus.

      C'est "class SchoolBus: Bus" au lieu de "class SchoolBus", ce qui était bien indiqué juste avant.

      -
      Edité par wlamour 20 août 2019 à 21:50:37

      • Partager sur Facebook
      • Partager sur Twitter
        11 octobre 2019 à 17:00:59

        Hello, 

        J'ai besoin d'une petite explication dans la partie surcharger les méthodes au niveau de l'exercice dans la console de code.

        Je voulais savoir pourquoi cette partie de code que j'ai voulu utiliser, ne fonctionne pas : 

          override func sePresenter() -> String {
            super.sePresenter()
            return " et je suis développeur !"
          }

        Sachant que je me suis basé de l'exemple du cours qui lui avait un print à la place d'un return.

        • Partager sur Facebook
        • Partager sur Twitter
          11 octobre 2019 à 23:06:43

          Hi !

          Même question que LoupBina...

          Et en plus, depuis que Xcode s'est màj, je n'arrive plus à accéder aux live views. Et j'ai perdu mes repères avec l'assistant (il n'y a plus les mêmes boutons)... Il me dit "The playground couldn't continue running because the playground source didn't compile successfully".

          Si une âme charitable passe dans le coin....

          Merci :)

          • Partager sur Facebook
          • Partager sur Twitter
            12 octobre 2019 à 23:59:49

            Bonjour,

            Pour LoupBinal, ça veut dire quoi “ça ne fonctionne pas” ? Ça ne compile pas ? Dans ce cas quel est le message d’erreur ? Le résultat attendu n’est pas celui obtenu ? Dans ce cas quel est le résultat attendu et celui obtenu ? (Même si je me doute bien du résultat obtenu dans le cas présent. C’est un réflexe à avoir. Ça ne marche pas, ça ne veut rien dire. Ou en tout cas rien d’utile)

            Pour kaguya :

            • meme remarque que pour LoupBinal si tu dis que tu as le même problème.
            • pour la perte de repère je suis désolé mais... peux pas faire grand chose.
            • la perte du live views (Je l’ai jamais utilisé je sais même pas ce que c’est) ce n’est pas à cause du code qui ne compile pas ? Si ça ne compile pas, il ne t’indique pas la ligne qui ne compile pas avec un message ?
            • Partager sur Facebook
            • Partager sur Twitter
              14 octobre 2019 à 0:14:19 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


                14 octobre 2019 à 8:48:20

                A mon avis tu n’as déclaré aucune classe. Ta fonction est globale. Du coup self n’existe pas. Supprime le.

                • Partager sur Facebook
                • Partager sur Twitter
                  14 octobre 2019 à 10:30:42

                  Geda a écrit:

                  Bonjour,

                  Pour LoupBinal, ça veut dire quoi “ça ne fonctionne pas” ? Ça ne compile pas ? Dans ce cas quel est le message d’erreur ? Le résultat attendu n’est pas celui obtenu ? Dans ce cas quel est le résultat attendu et celui obtenu ? (Même si je me doute bien du résultat obtenu dans le cas présent. C’est un réflexe à avoir. Ça ne marche pas, ça ne veut rien dire. Ou en tout cas rien d’utile)

                  Pour kaguya :

                  • meme remarque que pour LoupBinal si tu dis que tu as le même problème.
                  • pour la perte de repère je suis désolé mais... peux pas faire grand chose.
                  • la perte du live views (Je l’ai jamais utilisé je sais même pas ce que c’est) ce n’est pas à cause du code qui ne compile pas ? Si ça ne compile pas, il ne t’indique pas la ligne qui ne compile pas avec un message ?


                  En faite, quand je prend le code en initialisant une variable avant(dans la fonction) pour "super.sePresenter()" et que je l'affiche dans le return, l'exercice se valide mais de ma façon cité plus haut il se valide pas.

                  Kaguya123 a écrit:

                  Hi !

                  Même question que LoupBina...

                  Et en plus, depuis que Xcode s'est màj, je n'arrive plus à accéder aux live views. Et j'ai perdu mes repères avec l'assistant (il n'y a plus les mêmes boutons)... Il me dit "The playground couldn't continue running because the playground source didn't compile successfully".

                  Si une âme charitable passe dans le coin....

                  Merci :)

                  Vérifie qu'il est bien cocher dans le bouton au niveau de l'assistant puis pour qu'il s'affiche lance ton programme en cliquant sur la petite lecture à gauche du code.

                  En espérant que ça réponde à ta question.

                  -
                  Edité par LoupBina1 14 octobre 2019 à 10:47:32

                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 octobre 2019 à 11:51:15

                    Je connais pas les conditions par coeur les conditions de validation de l'exercice mais je pense piger ton problème

                    override func sePresenter(): String {
                      super.sePresenter()
                      return " et je suis développeur !"
                    }
                    

                    Ta méthode sePresenter retourne un String. J'imagine que derrière pour l'utiliser tu feras print(sePresenter()) et dans la console ça t'affichera " et je suis développeur !"

                    En effet, ton super.sePresenter() est appelé mais tu ne fais strictement rien du résultat. (Xcode devrait même te générer un warning dans ce cas). Du coup tu ne pourras pas afficher le "Je m'appelle Xavier" (ou que sais-je).

                    J'imagine que ce que tu souhaites réellement faire c'est :

                    override func sePresenter(): String {
                      return "\(super.sePresenter()) et je suis développeur !"
                    }
                    

                    -
                    Edité par Geda 14 octobre 2019 à 11:51:53

                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 octobre 2019 à 12:11:37

                      Ah d'accord je comprend mieux, je n'ai pas fait le test sur Xcode, je suis resté sur la console en ligne.

                      Merci.

                      J'ai aussi un petit problème, j'ai vraiment du mal à bien comprendre la 2nd partie du cours même en regardant plusieurs fois les vidéos et le texte écrit.

                      Il y a t'il un moyen de régler ce problème ? Enfin des sites qui font des petits exercices pour s'exercer sur la POO par exemple ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 octobre 2019 à 14:20:08 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


                          14 octobre 2019 à 14:23:58

                          Il te faut pas un init() pour self ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            14 octobre 2019 à 14:33:17

                            @LoupBina1 : Je pourrais t'expliquer à peu près n'importe quoi (je pense) mais il va falloir être un peu plus explicite sur ce que tu ne comprends pas. Avec si possible des exemples. Je ne connais pas le cours, je ne l'ai pas fait. Donc quand tu me parles de la "seconde partie" j'ai aucune idée de ce dont tu parles :)

                            @FlorenceIsaac : Ta fonction est en dehors du scope de la classe. Ainsi elle n'a pas accès à ses variables membres. Comme je le disais, il s'agit d'une fonction globale, self n'existe pas.

                            class Personne {
                              var nom: String
                            
                              func seMarie() {
                                  print(nom) // pas besoin de mettre self puisqu'il n'y a pas d'ambiguïté.
                              }
                            }
                            

                            Ce que tu as fait :

                            class Personne { var nom : String }
                            func seMarie() {}
                            

                            seMarie n'est pas une fonction de la classe Personne elle ne peut donc pas accéder à nom

                            Si j'extrapole on pourrait faire ça :

                            class Personne { var nom: String }
                            func seMarie(_ personne: Personne) {
                               print(personne.nom s'est marié) 
                            }
                            
                            seMarie(Personne(nom: "Hubert)) 
                            
                            • Partager sur Facebook
                            • Partager sur Twitter
                              14 octobre 2019 à 14:37:02

                              Non, je n'ai pas vu cela dans le cours
                              • Partager sur Facebook
                              • Partager sur Twitter
                                15 octobre 2019 à 12:05:18

                                Bonjour, quelqu'un aurait le code final que je le compare avec le mien ?

                                Car le bus est sensé avancer mais le miens n'avance pas :/

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  18 octobre 2019 à 16:21:43

                                  LoupBina1 a écrit:

                                  Bonjour, quelqu'un aurait le code final que je le compare avec le mien ?

                                  Car le bus est sensé avancer mais le miens n'avance pas :/


                                  Personne :( ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    18 octobre 2019 à 19:01:22

                                    Qu’est ce qui te fait penser qu’il devrait avancer ? (dans ton code je veux dire)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      21 octobre 2019 à 15:31:38

                                      class Bus {
                                          var driverName: String
                                          var seats = 20
                                          var occupiedSeats = 0 {
                                              willSet {
                                                  print("Il y a du mouvement dans le bus...")
                                              }
                                              didSet {
                                                  if oldValue < occupiedSeats {
                                                      print("\(occupiedSeats - oldValue) personnes viennent de monter !")
                                                  } else {
                                                      print("\(oldValue - occupiedSeats) personnes viennent de descendre !")
                                                  }
                                              }
                                          }
                                          var numberOfWheel = 4
                                          var description: String {
                                                  return "Je suis un bus conduit par \(driverName) avec \(occupiedSeats) personnes dedans."
                                          }
                                          
                                          init(driverName: String){
                                              self.driverName = driverName
                                          }
                                          
                                          func moveForward(){
                                              canvas.moveBusForward()
                                          }
                                          
                                          func stop(){
                                              canvas.stopBus()
                                          }
                                          
                                          func drive(road: Road){
                                              for _ in road.sections{
                                                  moveForward()
                                              }
                                          }
                                      }
                                      
                                      class SchoolBus: Bus {
                                          var schoolName = ""
                                          
                                          override func drive(road: Road) {
                                              for section in road.sections {
                                                  switch section.type {
                                                  case .plain:
                                                      moveForward()
                                                  case .home:
                                                      if shouldPickChildren() {
                                                          pickChildren(from: section)
                                                          stop()
                                                      }
                                                      moveForward()
                                                  case .school:
                                                      dropChildren()
                                                      stop()
                                                  }
                                              }
                                          }
                                          
                                          private func shouldPickChildren() -> Bool {
                                              return occupiedSeats < seats
                                          }
                                      
                                          private func pickChildren(from roadSection: RoadSection) {
                                              if let section = roadSection as? HomeRoadSection {
                                                  occupiedSeats += section.children
                                              }
                                          }
                                      
                                          private func dropChildren() {
                                              occupiedSeats = 0
                                          }
                                      }
                                      
                                      enum RoadSectionType {
                                          case plain
                                          case home
                                          case school
                                      }
                                      
                                      class RoadSection {
                                          
                                          var type: RoadSectionType
                                          
                                          init(type: RoadSectionType) {
                                              self.type = type
                                              switch type {
                                              case .plain:
                                                  canvas.createRoadSection()
                                                  canvas.moveBusForward()
                                              case .home:
                                                  canvas.createHomeRoadSection()
                                              case .school:
                                                  canvas.createSchoolRoadSection()
                                              }
                                          }
                                          convenience init() {
                                              self.init(type: .plain)
                                          }
                                      }
                                      
                                      class HomeRoadSection: RoadSection {
                                          var children: Int
                                          
                                          init(children: Int) {
                                              self.children = children
                                              super.init(type: .home)
                                          }
                                          
                                          convenience init(){
                                              self.init(children: 2)
                                          }
                                      }
                                      
                                      class SchoolRoadSection: RoadSection {
                                          init() {
                                              super.init(type: .school)
                                          }
                                      }
                                      
                                      class Road {
                                          var sections = [RoadSection]()
                                          static let maxLength = 77
                                          
                                          static func createStraightRoad() -> Road {
                                              return Road(length: 30)
                                          }
                                          
                                          static func createRoadToSchool() -> Road {
                                              let road = Road(length: 0)
                                              for i in 0..<30 {
                                                  if i%7 == 1 {
                                                      road.sections.append(HomeRoadSection(children: 2))
                                                  } else {
                                                      road.sections.append(RoadSection(type: .plain))
                                                  }
                                              }
                                              road.sections.append(SchoolRoadSection())
                                              return road
                                          }
                                          
                                          init(length: Int) {
                                              var length = length
                                              if length > Road.maxLength {
                                                  length = Road.maxLength
                                              }
                                              for _ in 0..<length {
                                                  self.sections.append(RoadSection(type: .plain))
                                              }
                                          }
                                      }
                                      
                                      Road.createStraightRoad()
                                      RoadSection(type: .plain)
                                      RoadSection(type: .home)
                                      RoadSection(type: .school)
                                      Je sais pas si le code final était ça, j'ai fait en sorte de faire juste avancer le bus mais j'ai pas d'autre maison de créé, pour tant la fonction du cours est présente.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        22 octobre 2019 à 11:02:37

                                        Je ne sais pas trop ce qu'est canvas mais ça ne me semble pas trop étonnant.

                                        Ligne 154 : ça retourne un truc mais tu ne l'utilises pas. Donc ça sert à rien. Ligne 156 : ça semble dessiner une home sur le canvas Ligne 155 et 157 : ça dessine autre chose qu'une home.

                                        Donc de ce que je comprend t'as 1 maison, 1 school, et 1 route sans rien.

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          28 octobre 2019 à 10:13:32

                                          Oui le canvas c'est une erreur dans le projet de base, normalement c'est canva.

                                          Tout le reste j'ai suivi le cours mais je pensais qu'à la fin on avait le même rendu qu'à l'introduction du cours.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            8 avril 2020 à 11:45:37

                                            Bonjour,

                                            Je viens de commencer le cours et sur xCode 11 je rencontre un problème déjà évoqué ici mais resté sans solution:

                                            Comment faire pour obtenir le TimeLine comme dans la première page du cours ?

                                            Les raccourcis ne fonctionnent pas, l'option n'apparait tout simplement pas.

                                            Par contre en ouvrant un précédent projet je peux bien y accéder, mais rien sur notre fichier "SchoolBusPlayground".

                                            Si vous avez une idée de solution...

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              9 avril 2020 à 19:00:36

                                              Guillaume__ a écrit:

                                              Bonjour,

                                              Je viens de commencer le cours et sur xCode 11 je rencontre un problème déjà évoqué ici mais resté sans solution:

                                              Comment faire pour obtenir le TimeLine comme dans la première page du cours ?

                                              Les raccourcis ne fonctionnent pas, l'option n'apparait tout simplement pas.

                                              Par contre en ouvrant un précédent projet je peux bien y accéder, mais rien sur notre fichier "SchoolBusPlayground".

                                              Si vous avez une idée de solution...


                                              Bonjour,

                                              Activer "Live View"

                                              Puis en lançant le code, le canvas devrait apparaître :

                                              -
                                              Edité par BindaIch 9 avril 2020 à 19:01:03

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                20 avril 2020 à 17:16:11 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


                                                  20 avril 2020 à 19:38:23

                                                  Je pense qu’il faut juste laisser le return et virer tout le reste (le if / else)
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    24 avril 2020 à 10:46:13

                                                    Bonjour,

                                                    Je ne dois pas piger un truc mais je tourne depuis un moment sur ceci:

                                                    Je ne comprends pas ce qu'il attends de plus en fait.

                                                    Merci de votre aide.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      24 avril 2020 à 11:41:11

                                                      Salut,

                                                      Essaie d'inverser nom<-> prenom. Et il te manque une virgule entre les deux, là ça compile pas.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        26 avril 2020 à 11:26:58

                                                        Salut à tous, 

                                                        J'ai un problème sur le chapitre "Concevez vos premiers objet". J'ai télécharger le projet, j'ai lancé SchoolBusPlayground.playground comme dit dans le cours. Le programme se lance mais je n'ai pas d'assistant ou TimeLine. (Je sais pas si il y à une différence) J'ai cherché à l'afficher, mais je ne le trouve pas. Dans le cours le bouton assistant est visible, mais dans Xcode 11 il faut dérouler un menu si je me souviens bien. (J'ai eu le coup dans le premier cours.) J'ai déroulé tous les menus, cherché un peu partout. Le seul truc que j'ai trouvé c'est "Reset Assistant Selection" dans "View" mais il est grisé.

                                                        Merci de votre aide :)

                                                        EDIT : J'ai oublié de run le projet :honte:. Ça fonctionne mieux XD

                                                        -
                                                        Edité par ArthusHaulot 26 avril 2020 à 11:34:47

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          28 septembre 2020 à 14:29:14

                                                          Bonjour

                                                          func sePresenter -> String() {
                                                          return "Bonjour, je m'appelle \(prenom)\(nom)"
                                                          }
                                                          func feterSonAnniversaire() {
                                                          age += 1
                                                          }
                                                          Je ne comprends pas pourquoi la console de code n'accepte pas ces méthodes de la classe Personne.
                                                          Merci pour cette top formation :-)


                                                          -
                                                          Edité par ClaudioLooping 28 septembre 2020 à 14:38:34

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            28 septembre 2020 à 14:50:06

                                                            Salut,

                                                            La première méthode ne compile pas. Ensuite il manque certainement un espace. 

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              28 septembre 2020 à 21:18:42

                                                              Merci Geda

                                                              Je vais revoir çà ; sur le playground, déjà :-)

                                                              Grossière erreur des parenthèses sur la première ; maintenant, playground est content, mais toujours pas la console

                                                               Désolé, je débute avec ce forum ; je mets mon code avec le bouton qui va bien

                                                              class Personne {
                                                                var prenom: String
                                                                var nom: String
                                                                var age = 0
                                                                
                                                                init(prenom: String, nom: String) {
                                                                  self.prenom = prenom
                                                                  self.nom = nom
                                                                }
                                                              
                                                                func sePresenter()->String {
                                                                  return "Bonjour, je m'appelle \(prenom) \(nom)"
                                                                }
                                                              
                                                                func feterSonAnniversaire() {
                                                                  age += 1
                                                                }
                                                              }



                                                              -
                                                              Edité par ClaudioLooping 28 septembre 2020 à 22:55:41

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              MOOC Approfondissez Swift avec la POO

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown