À propos de Ruby, modèle objet

J'ai appris à nouveau les spécifications de base du langage de Ruby telles que les objets, les classes et les méthodes dans le livre Metapro, alors prenez-en note en tant que mémorandum.

Ruby MetaPro semble utiliser des éléments de langage tels que des classes, des modules et des variables d'instance ...

À l'intérieur du modèle objet

Qu'est-ce qu'un modèle objet L'idée de saisir un objet qui résume les données liées à un programme en un seul modèle. Exécutez le code suivant

book.rb


class Book
 def name
  @name = 'metapro-ruby'
 end
end

book = Book.new
book.class          # => Book

Variable d'instance

Les variables d'instance sont contenues dans l'objet Il n'y a pas de connexion entre les classes d'objets Ruby et les variables d'instance Les variables d'instance n'apparaissent que lorsqu'une valeur est attribuée Si vous n'appelez pas la méthode name, la variable d'instance de livre n'existera pas.

book.rb


book.name
book.instance_variables         # => [:@name]

À propos de la méthode

En plus des variables d'instance, les objets ont des méthodes

book.rb


book.name
book.methods.grep(/name/)       # => [:name]

A ce stade, il faut noter que la méthode name n'existe pas dans le livre. Les objets n'ont que des variables d'instance et des références à des classes

La méthode name est une méthode d'instance de la classe Book et un objet (instance) de la classe Book est nécessaire pour l'appeler. Même si la même méthode se concentre sur la classe, elle est appelée méthode d'instance, et lorsqu'elle se concentre sur l'objet, elle est appelée méthode.

Résumé

À propos de la classe

Les classes sont des objets et ce qui s'applique aux objets s'applique également aux classes Comme les objets, les classes ont des classes, qui sont des classes de classe.

book.rb


'metapro-ruby'.class            # => String
String.class                    # => Class

L'instance de classe de classe Ruby est la classe elle-même La classe a également des méthodes et les méthodes de la classe sont des méthodes d'instance de la classe Class.

Class.instance_methods(false)     # => [:allocate, :new, :superclass]

Array.superclass                  # => Object
Object.superclass                 # => BasicObject
BasicObject.superclass            # => nil

La classe Object a également des méthodes qui peuvent être utilisées avec n'importe quel objet La classe BasicObject est la racine de la hiérarchie des classes Ruby et possède quelques méthodes de base.

module

La superclasse de la classe est Module Pour être précis, une classe est un module qui ajoute trois méthodes d'instance (new, allocate, superclass) pour créer des objets et hériter des classes.

Class.superclass                 # => Module

constant

Toutes les références commençant par une majuscule sont des constantes, y compris les noms de classe et les noms de module. La différence importante entre les constantes et les variables est la portée, et toutes les constantes du programme sont organisées dans un arbre comme un système de fichiers (les modules et les classes sont des répertoires, les constantes sont des fichiers).

module MyModule
 MyConstant = 'OUTER CONSTANT'
 
 class MyClass
  MyConstant = 'INNER CONSTANT'
 end
end

MyModule::MyConstant            # => "OUTER CONSTANT"
MyModule::MyClass::MyConstant   # => "INNER CONSTANT"

Résumé

~~ ・ La classe Class est une sous-classe de la classe Module, et la classe est également un module ~~

J'ai reçu un commentaire de @scivola et je l'ai corrigé. Merci beaucoup.

Recommended Posts

À propos de Ruby, modèle objet
Explication sur l'objet Ruby Range
À propos des hachages et symboles Ruby
À propos des classes et des instances Ruby
Explication sur l'objet Ruby String
À propos des guillemets simples et doubles Ruby
À propos de l'opérateur de produit Ruby (&) et de l'opérateur somme (|)
À propos de l'héritage orienté objet et du rendement Ruby
Explique les objets Ruby Array
Classe et modèle
À propos des symboles Ruby
À propos de Ruby Hash
À propos des tableaux Ruby
À propos de l'héritage Ruby
À propos de Ruby Block
À propos de Ruby Hash
A propos de l'orientation des objets
Rubis et gemme
À propos des méthodes Ruby
À propos du module Ruby's Kernel
À propos des messages d'erreur Ruby
[Ruby] Classes et instances
À propos de la gestion des exceptions Ruby
Symboles et rubis destructeur
À propos de Ruby Hash (suite)
Création de modèles et de tables
[Ruby] Big Decimal et DECIMAL
À propos de Bean et DI
À propos des classes et des instances
À propos de gets et gets.chomp
À propos des méthodes d'instance Ruby
À propos de la redirection et du transfert
Héritage et délégation Ruby
À propos de l'encapsulation et de l'héritage
À propos de Serializable et serialVersionUID
Réflexion sur la logique Ruby
[Ruby] J'ai réfléchi à la différence entre each_with_index et each.with_index
Différences entre les classes et les instances dans Ruby
Une note approximative sur les tableaux Ruby et les objets de hachage
À propos des setters et des getters Java. <Différence par rapport à l'orientation de l'objet>
Méfiez-vous des appels de méthode Ruby et des références de variables
À propos de l'instruction et de l'instruction if
À propos du verrouillage synchronisé et réentrant
[Ruby] Questions et vérification du nombre d'arguments de méthode
Erreurs de syntaxe et contre-mesures Ruby
À propos des expressions régulières dans Ruby
[Java] À propos de String et StringBuilder
À peu près la même et la même valeur
Extension Ruby C et volatile