{"id":70,"date":"2012-03-25T21:51:41","date_gmt":"2012-03-25T19:51:41","guid":{"rendered":"http:\/\/blog.nebule.org\/?p=70"},"modified":"2016-03-29T19:05:24","modified_gmt":"2016-03-29T17:05:24","slug":"objet-differencie-ou-indifferencie","status":"publish","type":"post","link":"http:\/\/blog.nebule.org\/?p=70","title":{"rendered":"Objet diff\u00e9renci\u00e9 ou indiff\u00e9renci\u00e9"},"content":{"rendered":"<p>Si un lien vers un objet ne contient pas de m\u00e9ta-donn\u00e9es, il n&rsquo;apporte pas d&rsquo;informations sur le traitement, l&rsquo;utilisation de cet objet. L&rsquo;objet doit donc contenir le n\u00e9cessaire pour que l&rsquo;on puisse identifier son type, et par extension sa fa\u00e7on de l&rsquo;utiliser. Il doit \u00eatre diff\u00e9renci\u00e9. Si le lien contient des m\u00e9tas, l&rsquo;objet peut \u00eatre indiff\u00e9renci\u00e9, ce sont les m\u00e9tas du lien qui d\u00e9termineront le traitement de l&rsquo;objet.<\/p>\n<p><span style=\"text-decoration: underline;\">L&rsquo;important, c&rsquo;est qu&rsquo;au moment du traitement, les donn\u00e9es de l&rsquo;objet aient \u00e9t\u00e9 diff\u00e9renci\u00e9es.<\/span><\/p>\n<p><!--more--><\/p>\n<h2>Objet = donn\u00e9e + m\u00e9ta(s)<\/h2>\n<p>Un fichier est un objet diff\u00e9renci\u00e9, obligatoirement. L&rsquo;extension de son nom d\u00e9finit relativement grossi\u00e8rement son type et donc le ou les programmes avec lesquels le fichier pourra \u00eatre ouvert et trait\u00e9. Si l&rsquo;on prend comme exemple une image avec une extension <em>.jpg<\/em>, on sait que c&rsquo;est une image de type <em>JPEG<\/em> et qu&rsquo;elle pourra \u00eatre visualis\u00e9e avec <em>Gwenview<\/em> par exemple, et ouvert pour modification avec <em>GIMP<\/em> notamment.<\/p>\n<p>L&rsquo;extension du nom de fichier ne donne que peu d&rsquo;informations sur le fichier. Un fichier <em>JPEG<\/em> contient des m\u00e9ta-donn\u00e9es sur les conditions de prise de vue, pas vraiment utile pour le traitement de l&rsquo;image proprement dit, mais bien plus pour son classement. Un fichier <em>JPEG<\/em> sera toujours trait\u00e9 de la m\u00eame fa\u00e7on. Par contre, un fichier de type <em>AVI<\/em> pose plus de probl\u00e8mes. L&rsquo;extension pr\u00e9cise que c&rsquo;est une vid\u00e9o, donc elle sera toujours ouverte pour visualisation par un lecteur de vid\u00e9os. Mais la fa\u00e7on donc est stock\u00e9 (encod\u00e9) la vid\u00e9o dans le fichier <em>AVI<\/em> est tr\u00e8s variable (\u00e0 ne pas confondre avec chiffrement). Le lecteur de vid\u00e9os conna\u00eet-il toutes les fa\u00e7on dont sont encod\u00e9es les vid\u00e9os <em>AVI<\/em>? Assur\u00e9ment non. Le format du fichier contient donc une information sur cet encodage, une m\u00e9ta-donn\u00e9es (qui ne porte pas ce nom).<\/p>\n<p>C&rsquo;est l\u00e0 qu&rsquo;intervient le type mime. Celui-ci agit comme une m\u00e9ta-donn\u00e9e qui d\u00e9crit non seulement le type de l&rsquo;objet mais aussi la fa\u00e7on dont il est encod\u00e9. L&rsquo;extension n&rsquo;a plus d&rsquo;utilit\u00e9 et peut dispara\u00eetre, avantageusement remplac\u00e9e par le type mime.<\/p>\n<h2>Objet = donn\u00e9e + code<\/h2>\n<p>En poussant un peu plus loin, pourquoi n&rsquo;int\u00e9grerait-on pas directement \u00e0 l&rsquo;objet les programmes n\u00e9cessaires \u00e0 son traitement?<br \/>\nCette pratique d\u00e9rive de la programmation objet. Elle est utilis\u00e9 par exemple avec des archives compress\u00e9es auto-extractibles. Le traitement passe naturellement par la petite portion de code ex\u00e9cutable contenu dans l&rsquo;archive. C&rsquo;est pratique et simple, plus besoin d&rsquo;installer l&rsquo;application correspondante, elle vient naturellement avec la donn\u00e9e et dispara\u00eet tout aussi naturellement quand on supprime cet objet. On a toujours ce qu&rsquo;il faut pour traiter la donn\u00e9e.<\/p>\n<p>Mais, int\u00e9grer le code de traitement de la donn\u00e9e directement dans l&rsquo;objet pose plus de probl\u00e8mes que cela n&rsquo;en r\u00e9sout. A commencer par la taille des objets qui explose puisque l&rsquo;on rediffuse \u00e0 chaque fois une partie code cons\u00e9quente et identique alors qu&rsquo;on l&rsquo;avait s\u00fcrement d\u00e9j\u00e0 avec un autre objet. Ensuite ce code devient immuable une fois int\u00e9gr\u00e9 dans un objet, il ne permet pas l&rsquo;ajout de nouvelles m\u00e9thodes de traitement qui ne manqueront pas de voir le jour plus tard. Le code n\u00e9cessite de dialoguer avec l&rsquo;interface graphique et le syst\u00e8me d&rsquo;exploitation, mais ceux-ci \u00e9voluant dans le temps risquent de rendre le code inadapt\u00e9, donc la donn\u00e9e inexploitable&#8230; et donc perdu.<\/p>\n<p>Int\u00e9grer le code \u00e0 l&rsquo;objet, c&rsquo;est la pire des fa\u00e7ons de faire. Si on y regarde de plus pr\u00e8s, la programmation objet n&rsquo;attache pas du code \u00e0 des objets mais \u00e0 des classes d&rsquo;objets, c&rsquo;est \u00e0 dire des objets de m\u00eame type (m\u00eame mod\u00e8le). Attacher du code \u00e0 la donn\u00e9e reste donc heureusement une pratique marginale.<\/p>\n<h2>Objet = donn\u00e9e + lien(s)<\/h2>\n<p>A l&rsquo;oppos\u00e9 de la m\u00e9ta et du code int\u00e9gr\u00e9 \u00e0 l&rsquo;objet, il y a l&rsquo;objet qui ne contient que la donn\u00e9e brute, indiff\u00e9renci\u00e9.<\/p>\n<p>Comme la donn\u00e9e doit imp\u00e9rativement \u00eatre diff\u00e9renci\u00e9e pour \u00eatre trait\u00e9, la m\u00e9ta n&rsquo;\u00e9tant plus attach\u00e9e \u00e0 l&rsquo;objet, elle lui est forc\u00e9ment externe. Dans ce cas, c&rsquo;est le lien vers cet objet qui contient l&rsquo;\u00e9quivalent de la m\u00e9ta de l&rsquo;objet. C&rsquo;est le lien qui d\u00e9termine la fa\u00e7on de traiter l&rsquo;objet. Ainsi l&rsquo;objet peut \u00eatre trait\u00e9 de diff\u00e9rentes mani\u00e8res en fonction du lien par lequel on acc\u00e8de \u00e0 l&rsquo;objet.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si un lien vers un objet ne contient pas de m\u00e9ta-donn\u00e9es, il n&rsquo;apporte pas d&rsquo;informations sur le traitement, l&rsquo;utilisation de cet objet. L&rsquo;objet doit donc contenir le n\u00e9cessaire pour que l&rsquo;on puisse identifier son type, et par extension sa fa\u00e7on de l&rsquo;utiliser. Il doit \u00eatre diff\u00e9renci\u00e9. Si le lien contient des m\u00e9tas, l&rsquo;objet peut \u00eatre &hellip; <a href=\"http:\/\/blog.nebule.org\/?p=70\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Objet diff\u00e9renci\u00e9 ou indiff\u00e9renci\u00e9<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[103,24,43],"tags":[174,176,325,326],"_links":{"self":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/70"}],"collection":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=70"}],"version-history":[{"count":1,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/70\/revisions"}],"predecessor-version":[{"id":2371,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/70\/revisions\/2371"}],"wp:attachment":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=70"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=70"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=70"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}