Il est plus difficile que vous ne le pensez d'enseigner Java à quiconque est nouveau dans la programmation et n'a l'expérience du codage qu'avec C. (En supposant une université d'information. Il semble que vous faites souvent C la première année et Java la deuxième année.) </ Sub> </ sub> Lorsqu'on me demande "Qu'est-ce qu'une classe?", J'explique qu'elle est "orientée objet". Et si on vous demandait "Qu'est-ce que l'orientation objet?"
«Il existe différents monogoto dans le monde, et monogoto a un état et un comportement. Par conséquent, pour divers monogoto, nous collectons des états et des comportements et les codons dans la classe. Ceci est orienté objet. " L'autre partie peut être convaincue. Cependant, l'autre partie peut être déconcertée par l'explication des termes «encapsulation» et «héritage» qui suit. Si vous avez soudainement appris que "collecter des états et des comportements pour exprimer monogoto", alors vous devez vous rappeler que "confiner l'état dans le comportement" et "monogoto concret est un monogoto abstrait". Il y a beaucoup de. Ce serait de la «douleur» pour ceux qui sont «la pratique plutôt que la théorie». De cette façon, il semble qu'il n'y ait pas de fin au nombre de personnes qui ne sont pas douées pour le codage orienté objet et s'éloignent de la zone de programmation.
La vraie nature de la «douleur» est que «ce qui est orienté objet, c'est-à-dire ce» n'est pas expliqué en un mot.
C'est de la spéculation, mais les gens pensent à de nouveaux concepts en les comparant à des concepts existants et apprennent l'erreur par la pratique. À Laputa, un château dans le ciel, les personnages principaux Pazu et Theta suivent l'avion gouvernemental Goliath pour découvrir la légendaire île Laputa flottant dans le ciel, et ils perdent presque de vue Goliath. À ce moment-là, la collaboratrice Dora tente de continuer la poursuite en utilisant un cerf-volant appelé «stand de montre». À ce moment, Pazu reçoit les instructions suivantes.
Vous pouvez apprendre à voler (un cerf-volant) avec votre corps!
Bien que ce soit une scène où se distingue la bravoure de Pazu qui gère sans difficulté son caractère déraisonnable mettant sa vie en danger, Dora n'a pas instruit Pazu sans réfléchir. Avant la queue de Goliath, Dora a mis un petit bateau sur les allées et venues de Theta avec Pazu pour sauver Theta, qui était à moitié menaçante et emmenée au gouvernement. À ce moment-là, Dora s'est évanouie en raison de l'impact de l'accident et le petit bateau était sur le point de s'écraser, mais Pazu a soudainement repris la manœuvre et il est mort dans neuf morts. Les instructions pour manoeuvrer le cerf-volant (nouveau concept) auraient attendu le palmarès de Pazu de manoeuvrer correctement de petits bateaux (concept existant) dans des situations extrêmement tendues.
L'orientation des objets n'est-elle pas la même? Si vous comparez l'orientation de l'objet avec quelque chose que tout le monde sait, et la différence est que chaque personne apprend en se basant sur la pratique. Au moins, c'est mieux que de ne pas pouvoir saisir l'image et même bouger les mains. Dans cet article, je vais expliquer la programmation Java et l'orientation des objets avec cette approche.
Enfin, si vous revenez à la définition de "qu'est-ce qu'un programme" et "qu'est-ce qu'un ordinateur (ou un ordinateur)" ** Il peut être logiquement prouvé que la classe est un "programme qui peut configurer un ordinateur" et que l'instance est un ordinateur **.
** Pour décrire une classe en un mot, c'est un "programme qui peut configurer un ordinateur". ** ** Cela peut être prouvé logiquement.
De même, il peut être prouvé que * une instance est un "ordinateur virtuel" *.
Premièrement, les trois éléments du programme dans le théorème de Boehm-Yakopni [1] «Séquentiel», «itération» et «branche» peuvent tous être effectués avec les méthodes de la classe. Bien entendu, les ** méthodes peuvent aussi être appelées programmes **, Malheureusement, la méthode n'a pas de "stockage". (Jabashi: Une "variable locale" qui n'est valide que dans une méthode ne peut pas être dite "mémorisée" car elle expire à la fin de la méthode) </ sub> Par conséquent, il n'est pas possible de créer un "en-tête" dans la machine de Turing [2]. ** Les méthodes peuvent être des programmes, mais pas des ordinateurs **. À cet égard, une classe a un "champ" (appelé "propriété" dans une langue autre que java), et cela peut être utilisé comme zone de stockage. ** Les classes peuvent construire des ordinateurs **. (Fin de la certification) En d'autres termes, une classe est un dessin de conception d'un ordinateur.
La classe elle-même est un type pour créer une "entité" appelée instance. Parce que l'instance est créée en fonction du dessin de conception appelé classe Une instance est «quelque chose créé à partir d'un dessin de conception appelé classe». En appliquant ce que nous avons prouvé dans la section 1-1 ici, Qu'est-ce qu'une instance? "Quelque chose fait à partir d'un dessin de conception appelé" Dessin de conception par ordinateur "" Est. C'est un ordinateur (s'il est fabriqué selon le dessin de conception). (Fin de la certification)
Depuis le chapitre 1, une classe est un "programme qui peut configurer un ordinateur". Il s'avère qu'une instance est un "ordinateur". Le "programme qui peut configurer un ordinateur" est exactement le système d'exploitation. Cela peut être étrange, mais chaque fois que vous programmez avec java, le programmeur crée un système d'exploitation, et chaque fois que vous «nouveau», vous créez un ordinateur virtuel.
Par exemple, considérez le code suivant.
Système d'exploitation «Windows» et ordinateur «ordinateur»
public class Mindows
{
private byte[] ram;
public byte getRam(int address){return this.ram[address];}
public void setRam(int address, byte value){this.ram[address]=value;}
public Mindows(int ram_size){this.ram = new byte[ram_size];}
}
class Main{ public static void main(String...args)
{
Mindows computer = new Mindows(64);//Création d'un ordinateur avec 64 octets de RAM
int i=0;
for(char each_char : "hello world".toCharArray())
computer.setRam(i++, (byte)each_char);
//0~Écrivez "bonjour le monde" à l'adresse 10
for(int j=0; j<11; j++)
System.out.print((char)computer.getRam(j));
//0~Adresse 10(Comme char)afficher
//→ "hello world" s'affiche sur la console.
}}
Ce code définit Mindows OS, crée un ordinateur virtuel ordinateur
qui contient ce système d'exploitation,
Vous manipulez la RAM. C'est le système d'exploitation (classe) qui définit ce qui peut être fait en utilisant ordinateur
(instance), mais le système d'exploitation ne fait rien directement, et l'entité d'exploitation réelle est
l'ordinateur` (instance). y a-t-il.
Mis-à-part, Faire une ROM avec le champ constant final, Créez un BIOS avec la méthode finale Il est envisageable d'avoir du stockage en utilisant la fonction d'entrée / sortie de fichier.
Les instances de type ʻArrayList sont des ordinateurs virtuels qui peuvent stocker des objets de type
T` dans l'ordre dans la zone de stockage.
L'interface List <T>
est juste une "déclaration" du programme qui stocke l'objet de type T
dans la zone de stockage. ** On peut dire que cela détermine "grossièrement" comment utiliser la zone de stockage **.
ʻArrayList et
LinkedList " implémentent "cette interface. Ce fait signifie que ʻArrayList <T>
etLinkedList <T>
déclarent que" la zone de stockage sera utilisée pour stocker des objets de type "T`".
La classe word ... </ sub> </ sub> qui implémente l'interface doit surcharger les méthodes vides définies dans l'interface et les définir spécifiquement. ... exécuter </ sub> </ sub>
La déclaration par l'interface est facile à comprendre si vous imaginez un appareil électroménager. Les cuiseurs à riz et les machines à laver (et les aspirateurs à cette époque) peuvent tous être appelés ordinateurs. Le cuiseur à riz calcule la dureté et le temps restant du riz cuit à partir du poids du riz et de l'eau. Il y a aussi des scènes où la machine à laver prend une décision automatique. Vous pouvez voir l'aspirateur en regardant Rumba. Il est important d'indiquer clairement si la classe (programme) que vous vous apprêtez à faire est un cuiseur à riz, une machine à laver ou un aspirateur. Dans certains cas, il est possible de dire: "Seule la classe qui implémente une interface spécifique est autorisée à l'utiliser spécialement." (Par exemple, une classe d'exception.)
"Je ne veux pas montrer aux clients les circuits à l'intérieur de l'ordinateur" - c'est l'encapsulation.
Jetons à nouveau un coup d'œil au code présenté au chapitre 2.
Lors de l'écriture dans la RAM de computer
, j'appelle volontairement une méthode appelée setRam (adresse, valeur à écrire)
.
Même si je ne fais pas cela, est-ce que «ram [adresse] = valeur à écrire» est inutile?
Bien sûr, c'est bien en principe, mais c'est en fait plus difficile à faire.
Les développeurs de "Mindows" ont créé setRam (adresse, valeur à écrire)
comme fonction pour écrire en mémoire, mais ils n'ont pas exposé la mémoire elle-même. L'ordinateur actuel place le modificateur d'accès «private» dans le code java afin que la mémoire soit verrouillée à l'intérieur du fer.
Ce faisant, ** la zone de stockage n'est pas altérée par l'utilisateur ** et le risque de dysfonctionnement est réduit.
Malheureusement, OS ne peut pas toujours être considéré comme une classe. En effet, il existe (ou la plupart) des systèmes d'exploitation qui ont des concepts que les classes n'ont pas. (Exemple: OS multi-tâches, mémoire virtuelle, etc. De plus, si vous devez penser à l'horloge et au processeur, il sera difficile de l'exprimer dans une classe (pratiquement)) Par conséquent, appelons le système d'exploitation qui peut exprimer une classe «OS de classe» et l'ordinateur qui peut exprimer une instance «ordinateur d'instance» ou «ordinateur de classe OS».
Au contraire, il n'y a pas d'OS qui ne possède aucun des concepts de la classe (uniquement des champs et des méthodes). (Clair d'après la preuve qu'une classe peut être considérée comme un OS)
** Dans un environnement où vous pouvez librement concevoir un système d'exploitation et générer et utiliser un ordinateur virtuel contenant ce système d'exploitation, le développement orienté objet est possible au moins partiellement **. (Appelons cela le "théorème orienté semi-objet") Ce n'est pas surprenant car chaque OS a tous les concepts de classes. Lorsqu'une erreur se produit, il est facile de l'identifier car il suffit de confirmer quel ordinateur (OS) a un problème et il est possible de répondre de manière flexible aux modifications de spécification. Cependant, l'encapsulation ne peut pas être utilisée sans mécanisme de restriction d'accès, et l'héritage est impossible sans mécanisme de copie.
<! - Implémentation de champs privés avec md5->
[1]http://s150001.skr.u-ryukyu.ac.jp/lectures/index.php?ProgrammingAbility [2]http://e-words.jp/w/%E3%83%81%E3%83%A5%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%9E%E3%82%B7%E3%83%B3.html
Recommended Posts