{"id":607,"date":"2013-11-04T13:42:55","date_gmt":"2013-11-04T17:42:55","guid":{"rendered":"http:\/\/tim.cstj.qc.ca\/cours\/xcode\/wp\/?page_id=607"},"modified":"2013-11-04T13:42:55","modified_gmt":"2013-11-04T17:42:55","slug":"projet-de-session","status":"publish","type":"page","link":"https:\/\/ve2cuy.com\/xcode\/projet-de-session\/","title":{"rendered":"Projet de session"},"content":{"rendered":"<h1>Aut2017 &#8211; \u00c9preuve synth\u00e8se &#8211; 60%<\/h1>\n<h1>Objectif: Produire une application iOS<\/h1>\n<h2>Description:<\/h2>\n<h3>Pour la r\u00e9alisation de l&rsquo;\u00e9preuve synth\u00e8se vous devrez, en \u00e9quipes de deux, d\u00e9velopper une application pour iOS.<\/h3>\n<h3>L&rsquo;appareil cible est un un iPad en mode portrait et en mode paysage.<\/h3>\n<p><span style=\"color: #ff0000;\"><strong>NOTE<\/strong><\/span>: \u00a0L&rsquo;application doit fonctionner dans les deux orientations.<\/p>\n<hr \/>\n<h1>Le sujet est libre<\/h1>\n<p>Par contre, il doit \u00eatre original.<br \/>\n<strong>Par exemple<\/strong>,<\/p>\n<ul>\n<li>gestion d&rsquo;une liste de t\u00e2ches,<\/li>\n<li>gestion d&rsquo;un portefeuille d&rsquo;actions,<\/li>\n<li>m\u00e9t\u00e9o en fonction de la position GPS,<\/li>\n<li>gestion d&rsquo;un \u00e9co-syst\u00e8me (comme dans le projet Aquarium), ..<\/li>\n<li>gestion d&rsquo;une liste de jeux,<\/li>\n<li>gestion du top films de la semaine,<\/li>\n<li>gestion d&rsquo;une adorable liste de chats, &#8230;<\/li>\n<\/ul>\n<p>L&rsquo;application doit offrir la possibilit\u00e9 d&rsquo;enregistrer, en mode local, les donn\u00e9es de l&rsquo;utilisateur; favoris, \u00e9l\u00e9ments de contenu, &#8230; \u00a0Voir\u00a0 <a href=\"https:\/\/realm.io\">RealM<\/a>.<br \/>\nLa majeure\u00a0partie du travail doit \u00eatre r\u00e9alis\u00e9e en classe (semaine 10 \u00e0 15).<br \/>\n<strong><span style=\"color: #ff0000;\">\u00c0 chaque semaine, votre niveau de participation\u00a0individuelle sera \u00e9valu\u00e9.<\/span><\/strong><br \/>\n<strong><span style=\"color: #008080;\">Rappel: L&rsquo;absence \u00e0 l&rsquo;\u00e9preuve synth\u00e8se (semaine 10 \u00e0 15)\u00a0entraine un \u00e9chec au cours.<\/span><\/strong><\/p>\n<hr \/>\n<p>Note:<br \/>\n<span style=\"color: #800000;\">L&rsquo;API de votre choix est valide seulement si les items sont dans un tableau: <strong>Array&lt;item&gt;<\/strong><\/span><br \/>\nPar exemple;<\/p>\n<pre class=\"lang:swift decode:true \">{\n    r\u00e9sultas : [\n                  { nom: \"pers1\" : {},},\n                  { nom: \"pers2\" : {},},\n                  { nom: \"pers3\" : {},},\n   ]\n}<\/pre>\n<p>Ceci n&rsquo;est pas valide;<\/p>\n<pre class=\"lang:swift decode:true \">{\n    r\u00e9sultas : {\n         \"pers1\" : {},\n         \"pers2\" : {},\n         \"pers3\" : {},\n         \"pers4\" : {},\n         \"pers5\" : {},\n}<\/pre>\n<hr \/>\n<h1>Directives<\/h1>\n<p>\u00c9quipe de deux<\/p>\n<ul>\n<li>Un programmeur<\/li>\n<li>Un\u00a0designer<\/li>\n<\/ul>\n<p><span style=\"color: #ff0000;\"><strong>Note<\/strong><\/span>: Les membres de l&rsquo;\u00e9quipe peuvent assumer les deux r\u00f4les.<br \/>\n&nbsp;<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<h1>Technologies et \u00e9l\u00e9ments obligatoires<\/h1>\n<p>[table nl=\u00a0\u00bb~~\u00a0\u00bb]<br \/>\n\u00c9l\u00e9ments,pp,pd,resp.,\u00e9tat<span style=\"color: #ff0000;\">**<\/span>, ver.<br \/>\nUtilisation de git pour le suivi du projet &#8211; branche master et design,1,1,prog-design,,2<br \/>\nTransition &lsquo;segue&rsquo; et passage de param\u00e8tres,2,,prog.,,2<br \/>\nObtenir et afficher dans la console; une liste d&rsquo;items obtenus via une API Rest,2,,prog.,,1<br \/>\nConversion du format JSON vers des classes swift &#8211; protocole &lsquo;Codable&rsquo;,2,,prog.,,1<br \/>\nAu moins une classe personnalis\u00e9e (excluant cellules personnalis\u00e9es),2,,prog.,,2<br \/>\n<a href=\"https:\/\/www.raywenderlich.com\/148513\/grand-central-dispatch-tutorial-swift-3-part-1\">GrandCentralDispatch<\/a>,1,,prog.,,2<br \/>\n<a href=\"https:\/\/developer.apple.com\/library\/content\/documentation\/Xcode\/Reference\/xcode_markup_formatting_ref\/index.html\">Documentation<\/a> en ligne,,2,designer,hors cours,2<br \/>\nUtilisation d&rsquo;une trame sonore dans\u00a0la sc\u00e8ne d&rsquo;intro,,2,designer,,1<br \/>\n<a href=\"https:\/\/developer.apple.com\/documentation\/uikit\/uitableview\">UITableViewCell<\/a> ou <a href=\"https:\/\/developer.apple.com\/documentation\/uikit\/uicollectionview\">UICollectionView<\/a> avec cellule personnalis\u00e9e,2,,prog.,,2<br \/>\n<a href=\"http:\/\/prof-tim.cstj.qc.ca\/xcode\/index.php\/projet-posttim-version-swift\/\">Programmer<\/a>\u00a0un <a href=\"https:\/\/developer.apple.com\/library\/content\/documentation\/Swift\/Conceptual\/Swift_Programming_Language\/Protocols.html\">protocole<\/a> pour la mise \u00e0 jour du champ description des favoris,3,,prog.,hors cours,2<br \/>\nUtilisation de <a href=\"https:\/\/realm.io\">RealM<\/a>\u00a0(<a href=\"https:\/\/github.com\/ve2cuy\/LesAmiesDeLaScienceAvecFavoris\">exemple<\/a>) pour enregistrer la liste des favoris &#8211; \u00e0 vous de faire les recherches,3,,prog.,hors cours,2<br \/>\nUtiliser au moins deux <a href=\"https:\/\/github.com\/vsouza\/awesome-ios\">librairies<\/a> tierces via <a href=\"https:\/\/cocoapods.org\">cocoapods<\/a> &#8211; sans compter RealM,2,,prog.,,1<br \/>\nFournir et renseigner les <a href=\"https:\/\/developer.apple.com\/ios\/human-interface-guidelines\/icons-and-images\/app-icon\/\">icons<\/a> de l&rsquo;application,,1,designer,hors cours,1<br \/>\nSc\u00e8ne d&rsquo;introduction avec au moins 2 <a href=\"https:\/\/medium.com\/@RobertGummesson\/a-look-at-uiview-animation-curves-part-1-191d9e6de0ab\">animations<\/a>\u00a0&#8211; sauf la propri\u00e9t\u00e9 &lsquo;alpha&rsquo;,,3,designer,,1<br \/>\nConception d&rsquo;une vid\u00e9o de pr\u00e9sentation de l&rsquo;\u00e9quipe et du projet,,6,designer,hors cours,2<br \/>\nInt\u00e9gration de la\u00a0vid\u00e9o de pr\u00e9sentation de l&rsquo;\u00e9quipe &#8211; Utiliser une vid\u00e9o temp. pour V1,,2,designer,hors cours,1<br \/>\nL&rsquo;application doit fonctionner\u00a0en mode portrait et en mode paysage,,2,designer,,2<br \/>\nNomenclature et organisation des fichiers,1,,prog.,,2<br \/>\nDocument promotionnel &#8211; <a href=\"https:\/\/itunes.apple.com\/ca\/app\/facebook\/id284882215?l=fr\">exemple<\/a>,,2,designer,,2<br \/>\nFonctionnalit\u00e9 g\u00e9n\u00e9rale du projet,6,1,prog-design,,2<br \/>\nQualit\u00e9 visuelle \u00a0g\u00e9n\u00e9rale du projet,1,6,prog-design,,2<br \/>\n<span style=\"color: #ff0000;\">Remise du prototype \u00e0 la semaine 13 (tag version\/1.0) &#8211; fusion des 2 branches<\/span>~~Le Storyboard contient le prototype de toutes les sc\u00e8nes du projet,,2,designer,hors cours,1<br \/>\n<span style=\"color: #ff0000;\">Remise de la version finale semaine 16 (tag version\/2.0) \u00a0&#8211; fusion des 2 branches<\/span>,2,,prog.,,2<br \/>\ntotal,30,30,,<br \/>\n[\/table]<br \/>\n<span style=\"color: #ff0000;\">*<\/span>\u00a0 Les membres de l&rsquo;\u00e9quipe sont mutuellement responsables de la qualit\u00e9 g\u00e9n\u00e9rale du projet.<br \/>\n<span style=\"color: #ff0000;\">**\u00a0<span style=\"color: #000000;\">Non couvert en classe. \u00a0Il est de votre responsabilit\u00e9 de faire les recherches n\u00e9cessaires \u00e0 la compr\u00e9hension du point.<\/span><\/span><br \/>\nVoici un exemple d&rsquo;une vid\u00e9o de pr\u00e9sentation d&rsquo;un projet:<br \/>\n<div style=\"width: 700px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-607-1\" width=\"700\" height=\"394\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"\/xcode\/wp-content\/uploads\/2013\/11\/Au-pays-de-la-typographie.mp4?_=1\" \/><a href=\"\/xcode\/wp-content\/uploads\/2013\/11\/Au-pays-de-la-typographie.mp4\">\/xcode\/wp-content\/uploads\/2013\/11\/Au-pays-de-la-typographie.mp4<\/a><\/video><\/div><br \/>\n&nbsp;<\/p>\n<hr \/>\n<h1>Remise<\/h1>\n<h1><span style=\"color: #ff0000;\">Vendredi le\u00a015 d\u00e9cembre, 18h00<\/span><\/h1>\n<p>Via GitHub.<br \/>\nP.S. \u00a0Vous devez m&rsquo;avoir ajout\u00e9 (ve2cuy) comme collaborateur (lecture\/\u00e9criture) \u00e0 votre projet de session.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aut2017 &#8211; \u00c9preuve synth\u00e8se &#8211; 60% Objectif: Produire une application iOS Description: Pour la r\u00e9alisation de l&rsquo;\u00e9preuve synth\u00e8se vous devrez, en \u00e9quipes de deux, d\u00e9velopper une application pour iOS. L&rsquo;appareil cible est un un iPad en mode portrait et en mode paysage. NOTE: \u00a0L&rsquo;application doit fonctionner dans les deux orientations. Le sujet est libre Par [&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-607","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/pages\/607","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=607"}],"version-history":[{"count":0,"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/pages\/607\/revisions"}],"wp:attachment":[{"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/media?parent=607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}