{"id":1335,"date":"2014-07-18T11:00:57","date_gmt":"2014-07-18T15:00:57","guid":{"rendered":"http:\/\/tim.cstj.qc.ca\/cours\/xcode\/wp\/?page_id=1335"},"modified":"2014-07-18T11:00:57","modified_gmt":"2014-07-18T15:00:57","slug":"les-classes-sous-swift-poo","status":"publish","type":"page","link":"https:\/\/ve2cuy.com\/xcode\/les-classes-sous-swift-poo\/","title":{"rendered":"Les Classes sous Swift &#8211; POO"},"content":{"rendered":"<p><span style=\"color: rgb(255, 0, 0);\">Note: Document en cours de r\u00e9daction<\/span><\/p>\n<h1>D\u00e9finition<\/h1>\n<p>&#8230;<\/p>\n<h1>Classe de base<\/h1>\n<p>&nbsp;<br \/>\nAction &#8211; Construisons la\u00a0classe &lsquo;Personnage&rsquo; (dans le contr\u00f4leur de la sc\u00e8ne principale)<br \/>\n&nbsp;<\/p>\n<pre class=\"lang:swift decode:true \">struct TrackedString {\n    private(set) var numberOfEdits = 0\n    var value: String = \"\" {\n    didSet {\n        numberOfEdits++\n    }\n    }\n}<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"lang:swift mark:6-23,29-32 decode:true \">\/\/  Introduction aux classes sous swift\nimport UIKit\nclass ViewController: UIViewController {\n    class Personnage {  \/\/ Par convention, en swift, le nom des types commencent par une lettre majuscule.\n        var nom:String = \"\"\n        var image:UIImage = UIImage()\n        var force:Int = 0\n        var compagnons = [String]()\n        func description() -&gt; String {\n            return  \"================================\\n\" +\n                    \"Personnage: \\(nom)\\n\" +\n                    \"force: \\(force)\\n\"    +\n                    \"--------------------------------\\n\" +\n                    \"Compagnons: \\n\\n\"     +\n                    \"\\(compagnons)\\n\"      +\n                    \"================================\\n\"\n        }  \/\/ description\n    }  \/\/ Personnage\n     \/\/ Point d'entr\u00e9e de l'application\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        var fred = Personnage()\n        fred.nom = \"Fred Cailloux\"\n        fred.force = 99\n        println( \"Description du personnage fred:\\n\\( fred.description() )\" )\n    } \/\/ viewDidLoad\n}  \/\/ ViewController<\/pre>\n<p>Console:<\/p>\n<blockquote><p><b>Description du personnage fred: <\/b><b>================================ <\/b><b>Personnage: Fred Cailloux <\/b><b>force: 99 <\/b><b>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; <\/b><b>Compagnons:\u00a0<\/b> <b>[]<\/b> <b>================================<\/b><\/p><\/blockquote>\n<hr \/>\n<h1><\/h1>\n<h1>Classe avec une m\u00e9thode init()<\/h1>\n<p>&nbsp;<\/p>\n<pre class=\"lang:swift mark:6-32,38-39 decode:true\">\/\/  Introduction aux classes sous swift\nimport UIKit\nclass ViewController: UIViewController {\n    class Personnage {\n        var nom:String\n        var force:Int\n        var image:UIImage\n        var compagnons:[String]\n        init(nom:String, force:Int) {\n           self.nom = nom  \/\/ self.nom permet de distinguer la propri\u00e9t\u00e9 du param\u00e8tre\n           self.force = force\n           self.image = UIImage()\n           self.compagnons = [String]()\n        } \/\/ init\n        func description() -&gt; String {\n            return  \"================================\\n\" +\n                    \"Personnage: \\(nom)\\n\" +\n                    \"force: \\(force)\\n\"    +\n                    \"--------------------------------\\n\" +\n                    \"Compagnons: \\n\\n\"     +\n                    \"\\(compagnons)\\n\"      +\n                    \"================================\\n\"\n        }  \/\/ description\n    }  \/\/ Personnage\n     \/\/ Point d'entr\u00e9e de l'application\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        var perso = Personnage(nom:\"Tor LeBoss\", force:314)\n         println( \"Description du personnage:\\n\\( perso.description() )\" )\n    } \/\/ viewDidLoad\n}  \/\/ ViewController<\/pre>\n<p>Console:<\/p>\n<blockquote><p><b>Description du personnage: <\/b><b>================================ <\/b><b>Personnage: Tor LeBoss <\/b><b>force: 314 <\/b><b>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; <\/b><b>Compagnons:\u00a0<\/b> <b>[] <\/b><b>================================<\/b><\/p><\/blockquote>\n<hr \/>\n<h1><\/h1>\n<h1>Organisation des classes dans des fichiers<\/h1>\n<p>Action &#8211; Ajouter un nouveau groupe nomm\u00e9 &lsquo;Mes classes&rsquo; au projet Atl+Cmd+N. Action &#8211; Ajouter un nouveau fichier de type &lsquo;Swift file&rsquo; au projet Cmd+N <img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1348 size-full\" src=\"\/xcode\/wp-content\/uploads\/2014\/07\/intro-classe-01.png\" alt=\"intro-classe-01\" width=\"733\" height=\"432\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1349 size-full\" src=\"\/xcode\/wp-content\/uploads\/2014\/07\/intro-classe-021.png\" alt=\"intro-classe-02\" width=\"733\" height=\"430\" \/> \u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1350 size-full\" src=\"\/xcode\/wp-content\/uploads\/2014\/07\/intro-classe-03.png\" alt=\"intro-classe-03\" width=\"873\" height=\"284\" \/> Action &#8211; D\u00e9placer la classe Personnage du contr\u00f4leur de la sc\u00e8ne vers le fichier Personnage.swift Note: Xcode ne va pas reconnaitre la classe de type UIImage. \u00a0Son prototype est d\u00e9finit dans UIKit. \u00a0Il suffit d&rsquo;ajouter \u00ab\u00a0&lsquo;import UIKit\u00a0\u00bb au d\u00e9but du fichier pour corriger le probl\u00e8me. \u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1351 size-full\" src=\"\/xcode\/wp-content\/uploads\/2014\/07\/Intro-Classe-04.png\" alt=\"Intro-Classe-04\" width=\"775\" height=\"396\" \/> Contenu du fichier &lsquo;Personnage.swift&rsquo;<\/p>\n<pre class=\"lang:swift decode:true\">\/\/  Personnage.swift\nimport Foundation\nimport UIKit\nclass Personnage {\n    var nom:String\n    var force:Int\n    var image:UIImage\n    var compagnons:[String]\n    init(nom:String, force:Int) {\n        self.nom = nom  \/\/ self.nom permet de distinguer la propri\u00e9t\u00e9 du param\u00e8tre\n        self.force = force\n        self.image = UIImage()\n        self.compagnons = [String]()\n    } \/\/ init\n    func description() -&gt; String {\n        return  \"================================\\n\" +\n            \"Personnage: \\(nom)\\n\" +\n            \"force: \\(force)\\n\"    +\n            \"--------------------------------\\n\" +\n            \"Compagnons: \\n\\n\"     +\n            \"\\(compagnons)\\n\"      +\n            \"================================\\n\"\n    }  \/\/ description\n}  \/\/ Personnage<\/pre>\n<p>Faisons les modifications suivantes au contr\u00f4leur :<\/p>\n<pre class=\"lang:swift mark:4-5,7 decode:true \">    override func viewDidLoad() {\n        super.viewDidLoad()\n        var perso = Personnage(nom:\"Tor LeBoss\", force:314)\n        let nomPerso = perso.nom\n        println( \"Le nom du personnage est \\(nomPerso)\")\n    } \/\/ viewDidLoad<\/pre>\n<p>Testons l&rsquo;application<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Note: Document en cours de r\u00e9daction D\u00e9finition &#8230; Classe de base &nbsp; Action &#8211; Construisons la\u00a0classe &lsquo;Personnage&rsquo; (dans le contr\u00f4leur de la sc\u00e8ne principale) &nbsp; struct TrackedString { private(set) var numberOfEdits = 0 var value: String = \u00ab\u00a0\u00a0\u00bb { didSet { numberOfEdits++ } } } &nbsp; \/\/ Introduction aux classes sous swift import UIKit class [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1335","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/pages\/1335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/comments?post=1335"}],"version-history":[{"count":0,"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/pages\/1335\/revisions"}],"wp:attachment":[{"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/media?parent=1335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}