fbpx
Wikipedia

Method (computer programming)

A method in object-oriented programming (OOP) is a procedure associated with an object, and generally also a message. An object consists of state data and behavior; these compose an interface, which specifies how the object may be used. A method is a behavior of an object parametrized by a user.

Data is represented as properties of the object, and behaviors are represented as methods. For example, a Window object could have methods such as open and close, while its state (whether it is open or closed at any given point in time) would be a property.

In class-based programming, methods are defined within a class, and objects are instances of a given class. One of the most important capabilities that a method provides is method overriding - the same name (e.g., area) can be used for multiple different kinds of classes. This allows the sending objects to invoke behaviors and to delegate the implementation of those behaviors to the receiving object. A method in Java programming sets the behavior of a class object. For example, an object can send an area message to another object and the appropriate formula is invoked whether the receiving object is a rectangle, circle, triangle, etc.

Methods also provide the interface that other classes use to access and modify the properties of an object; this is known as encapsulation. Encapsulation and overriding are the two primary distinguishing features between methods and procedure calls.[1]

Overriding and overloading edit

Method overriding and overloading are two of the most significant ways that a method differs from a conventional procedure or function call. Overriding refers to a subclass redefining the implementation of a method of its superclass. For example, findArea may be a method defined on a shape class,[2] triangle, etc. would each define the appropriate formula to calculate their area. The idea is to look at objects as "black boxes" so that changes to the internals of the object can be made with minimal impact on the other objects that use it. This is known as encapsulation and is meant to make code easier to maintain and re-use.

Method overloading, on the other hand, refers to differentiating the code used to handle a message based on the parameters of the method. If one views the receiving object as the first parameter in any method then overriding is just a special case of overloading where the selection is based only on the first argument. The following simple Java example illustrates the difference:

Accessor, mutator and manager methods edit

Accessor methods are used to read the data values of an object. Mutator methods are used to modify the data of an object. Manager methods are used to initialize and destroy objects of a class, e.g. constructors and destructors.

These methods provide an abstraction layer that facilitates encapsulation and modularity. For example, if a bank-account class provides a getBalance() accessor method to retrieve the current balance (rather than directly accessing the balance data fields), then later revisions of the same code can implement a more complex mechanism for balance retrieval (e.g., a database fetch), without the dependent code needing to be changed. The concepts of encapsulation and modularity are not unique to object-oriented programming. Indeed, in many ways the object-oriented approach is simply the logical extension of previous paradigms such as abstract data types and structured programming.[3]

Constructors edit

A constructor is a method that is called at the beginning of an object's lifetime to create and initialize the object, a process called construction (or instantiation). Initialization may include an acquisition of resources. Constructors may have parameters but usually do not return values in most languages. See the following example in Java:

public class Main {  String _name;  int _roll;  Main(String name, int roll) { // constructor method  this._name = name;  this._roll = roll;  } } 

Destructor edit

A Destructor is a method that is called automatically at the end of an object's lifetime, a process called Destruction. Destruction in most languages does not allow destructor method arguments nor return values. Destructors can be implemented so as to perform cleanup chores and other tasks at object destruction.

Finalizers edit

In garbage-collected languages, such as Java,[4]: 26, 29  C#,[5]: 208–209  and Python, destructors are known as finalizers. They have a similar purpose and function to destructors, but because of the differences between languages that utilize garbage-collection and languages with manual memory management, the sequence in which they are called is different.

Abstract methods edit

An abstract method is one with only a signature and no implementation body. It is often used to specify that a subclass must provide an implementation of the method, as in an abstract class. Abstract methods are used to specify interfaces in some programming languages.[6]

Example edit

 

The following Java code shows an abstract class that needs to be extended:

abstract class Shape {  abstract int area(int h, int w); // abstract method signature } 

The following subclass extends the main class:

public class Rectangle extends Shape {  @Override  int area(int h, int w) {  return h * w;  } } 

Reabstraction edit

If a subclass provides an implementation for an abstract method, another subclass can make it abstract again. This is called reabstraction.

In practice, this is rarely used.

Example edit

In C#, a virtual method can be overridden with an abstract method. (This also applies to Java, where all non-private methods are virtual.)

class IA {  public virtual void M() { } } abstract class IB : IA {  public override abstract void M(); // allowed } 

Interfaces' default methods can also be reabstracted, requiring subclasses to implement them. (This also applies to Java.)

interface IA {  void M() { } } interface IB : IA {  abstract void IA.M(); } class C : IB { } // error: class 'C' does not implement 'IA.M'. 

Class methods edit

Class methods are methods that are called on a class rather than an instance. They are typically used as part of an object meta-model. I.e, for each class, defined an instance of the class object in the meta-model is created. Meta-model protocols allow classes to be created and deleted. In this sense, they provide the same functionality as constructors and destructors described above. But in some languages such as the Common Lisp Object System (CLOS) the meta-model allows the developer to dynamically alter the object model at run time: e.g., to create new classes, redefine the class hierarchy, modify properties, etc.

Special methods edit

Special methods are very language-specific and a language may support none, some, or all of the special methods defined here. A language's compiler may automatically generate default special methods or a programmer may be allowed to optionally define special methods. Most special methods cannot be directly called, but rather the compiler generates code to call them at appropriate times.

Static methods edit

Static methods are meant to be relevant to all the instances of a class rather than to any specific instance. They are similar to static variables in that sense. An example would be a static method to sum the values of all the variables of every instance of a class. For example, if there were a Product class it might have a static method to compute the average price of all products.

A static method can be invoked even if no instances of the class exist yet. Static methods are called "static" because they are resolved at compile time based on the class they are called on and not dynamically as in the case with instance methods, which are resolved polymorphically based on the runtime type of the object.

Examples edit

In Java edit

In Java, a commonly used static method is:

Math.max(double a, double b) 

This static method has no owning object and does not run on an instance. It receives all information from its arguments.[2]

Copy-assignment operators edit

Copy-assignment operators define actions to be performed by the compiler when a class object is assigned to a class object of the same type.

Operator methods edit

Operator methods define or redefine operator symbols and define the operations to be performed with the symbol and the associated method parameters. C++ example:

#include <string> class Data {  public:  bool operator<(const Data& data) const { return roll_ < data.roll_; }  bool operator==(const Data& data) const {  return name_ == data.name_ && roll_ == data.roll_;  }  private:  std::string name_;  int roll_; }; 

Member functions in C++ edit

Some procedural languages were extended with object-oriented capabilities to leverage the large skill sets and legacy code for those languages but still provide the benefits of object-oriented development. Perhaps the most well-known example is C++, an object-oriented extension of the C programming language. Due to the design requirements to add the object-oriented paradigm on to an existing procedural language, message passing in C++ has some unique capabilities and terminologies. For example, in C++ a method is known as a member function. C++ also has the concept of virtual functions which are member functions that can be overridden in derived classes and allow for dynamic dispatch.

Virtual functions edit

Virtual functions are the means by which a C++ class can achieve polymorphic behavior. Non-virtual member functions, or regular methods, are those that do not participate in polymorphism.

C++ Example:

#include <iostream> #include <memory> class Super {  public:  virtual ~Super() = default;  virtual void IAm() { std::cout << "I'm the super class!\n"; } }; class Sub : public Super {  public:  void IAm() override { std::cout << "I'm the subclass!\n"; } }; int main() {  std::unique_ptr<Super> inst1 = std::make_unique<Super>();  std::unique_ptr<Super> inst2 = std::make_unique<Sub>();  inst1->IAm(); // Calls |Super::IAm|.  inst2->IAm(); // Calls |Sub::IAm|. } 

See also edit

Notes edit

  1. ^ "What is an Object?". oracle.com. Oracle Corporation. Retrieved 13 December 2013.
  2. ^ a b Martin, Robert C. (2009). Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall. p. 296. ISBN 978-0-13-235088-4.
  3. ^ Meyer, Bertrand (1988). Object-Oriented Software Construction. Cambridge: Prentice Hall International Series in Computer Science. pp. 52–54. ISBN 0-13-629049-3.
  4. ^ Bloch, Joshua (2018). "Effective Java: Programming Language Guide" (third ed.). Addison-Wesley. ISBN 978-0134685991.
  5. ^ Albahari, Joseph. C# 10 in a Nutshell. O'Reilly. ISBN 978-1-098-12195-2.
  6. ^ "Abstract Methods and Classes". oracle.com. Oracle Java Documentation. Retrieved 11 December 2014.

References edit

  • JANA, DEBASISH (1 January 2005). C++ and Object-oriented Programming Paradigm. PHI Learning Pvt. Ltd. ISBN 978-81-203-2871-6.
  • Sengupta, Probal (1 August 2004). Object-Oriented Programming: Fundamentals And Applications. PHI Learning Pvt. Ltd. ISBN 978-81-203-1258-6.
  • Svenk, Goran (2003). Object-oriented Programming: Using C++ for Engineering and Technology. Cengage Learning. ISBN 0-7668-3894-3.
  • Balagurusamy (2013). Object Oriented Programming with C++. Tata McGraw-Hill Education. ISBN 978-1-259-02993-6.
  • Kirch-Prinz, Ulla; Prinz, Peter (2002). A Complete Guide to Programming in C++. Jones & Bartlett Learning. ISBN 978-0-7637-1817-6.
  • Conger, David (2006). Creating Games in C++: A Step-by-step Guide. New Riders. ISBN 978-0-7357-1434-2.
  • Skinner, M. T. (1992). The Advanced C++ Book. Silicon Press. ISBN 978-0-929306-10-0.
  • Love (1 September 2005). Linux Kernel Development. Pearson Education. ISBN 978-81-7758-910-8.
  • DEHURI, SATCHIDANANDA; JAGADEV, ALOK KUMAR; RATH, AMIYA KUMAR (8 May 2007). OBJECT-ORIENTED PROGRAMMING USING C++. PHI Learning Pvt. Ltd. ISBN 978-81-203-3085-6.

method, computer, programming, method, object, oriented, programming, procedure, associated, with, object, generally, also, message, object, consists, state, data, behavior, these, compose, interface, which, specifies, object, used, method, behavior, object, p. A method in object oriented programming OOP is a procedure associated with an object and generally also a message An object consists of state data and behavior these compose an interface which specifies how the object may be used A method is a behavior of an object parametrized by a user Data is represented as properties of the object and behaviors are represented as methods For example a Window object could have methods such as open and close while its state whether it is open or closed at any given point in time would be a property In class based programming methods are defined within a class and objects are instances of a given class One of the most important capabilities that a method provides is method overriding the same name e g area can be used for multiple different kinds of classes This allows the sending objects to invoke behaviors and to delegate the implementation of those behaviors to the receiving object A method in Java programming sets the behavior of a class object For example an object can send an area message to another object and the appropriate formula is invoked whether the receiving object is a rectangle circle triangle etc Methods also provide the interface that other classes use to access and modify the properties of an object this is known as encapsulation Encapsulation and overriding are the two primary distinguishing features between methods and procedure calls 1 Contents 1 Overriding and overloading 2 Accessor mutator and manager methods 2 1 Constructors 2 2 Destructor 2 2 1 Finalizers 3 Abstract methods 3 1 Example 3 2 Reabstraction 3 2 1 Example 4 Class methods 5 Special methods 5 1 Static methods 5 1 1 Examples 5 1 1 1 In Java 5 2 Copy assignment operators 5 3 Operator methods 6 Member functions in C 6 1 Virtual functions 7 See also 8 Notes 9 ReferencesOverriding and overloading editMethod overriding and overloading are two of the most significant ways that a method differs from a conventional procedure or function call Overriding refers to a subclass redefining the implementation of a method of its superclass For example findArea may be a method defined on a shape class 2 triangle etc would each define the appropriate formula to calculate their area The idea is to look at objects as black boxes so that changes to the internals of the object can be made with minimal impact on the other objects that use it This is known as encapsulation and is meant to make code easier to maintain and re use Method overloading on the other hand refers to differentiating the code used to handle a message based on the parameters of the method If one views the receiving object as the first parameter in any method then overriding is just a special case of overloading where the selection is based only on the first argument The following simple Java example illustrates the difference Accessor mutator and manager methods editAccessor methods are used to read the data values of an object Mutator methods are used to modify the data of an object Manager methods are used to initialize and destroy objects of a class e g constructors and destructors These methods provide an abstraction layer that facilitates encapsulation and modularity For example if a bank account class provides a getBalance accessor method to retrieve the current balance rather than directly accessing the balance data fields then later revisions of the same code can implement a more complex mechanism for balance retrieval e g a database fetch without the dependent code needing to be changed The concepts of encapsulation and modularity are not unique to object oriented programming Indeed in many ways the object oriented approach is simply the logical extension of previous paradigms such as abstract data types and structured programming 3 Constructors edit Main article Constructor computer science A constructor is a method that is called at the beginning of an object s lifetime to create and initialize the object a process called construction or instantiation Initialization may include an acquisition of resources Constructors may have parameters but usually do not return values in most languages See the following example in Java public class Main String name int roll Main String name int roll constructor method this name name this roll roll Destructor edit Main article Destructor computer science A Destructor is a method that is called automatically at the end of an object s lifetime a process called Destruction Destruction in most languages does not allow destructor method arguments nor return values Destructors can be implemented so as to perform cleanup chores and other tasks at object destruction Finalizers edit In garbage collected languages such as Java 4 26 29 C 5 208 209 and Python destructors are known as finalizers They have a similar purpose and function to destructors but because of the differences between languages that utilize garbage collection and languages with manual memory management the sequence in which they are called is different Abstract methods editAn abstract method is one with only a signature and no implementation body It is often used to specify that a subclass must provide an implementation of the method as in an abstract class Abstract methods are used to specify interfaces in some programming languages 6 Example edit nbsp The following Java code shows an abstract class that needs to be extended abstract class Shape abstract int area int h int w abstract method signature The following subclass extends the main class public class Rectangle extends Shape Override int area int h int w return h w Reabstraction edit If a subclass provides an implementation for an abstract method another subclass can make it abstract again This is called reabstraction In practice this is rarely used Example edit In C a virtual method can be overridden with an abstract method This also applies to Java where all non private methods are virtual class IA public virtual void M abstract class IB IA public override abstract void M allowed Interfaces default methods can also be reabstracted requiring subclasses to implement them This also applies to Java interface IA void M interface IB IA abstract void IA M class C IB error class C does not implement IA M Class methods editClass methods are methods that are called on a class rather than an instance They are typically used as part of an object meta model I e for each class defined an instance of the class object in the meta model is created Meta model protocols allow classes to be created and deleted In this sense they provide the same functionality as constructors and destructors described above But in some languages such as the Common Lisp Object System CLOS the meta model allows the developer to dynamically alter the object model at run time e g to create new classes redefine the class hierarchy modify properties etc Special methods editSpecial methods are very language specific and a language may support none some or all of the special methods defined here A language s compiler may automatically generate default special methods or a programmer may be allowed to optionally define special methods Most special methods cannot be directly called but rather the compiler generates code to call them at appropriate times Static methods edit See also Static member function Static methods are meant to be relevant to all the instances of a class rather than to any specific instance They are similar to static variables in that sense An example would be a static method to sum the values of all the variables of every instance of a class For example if there were a Product class it might have a static method to compute the average price of all products A static method can be invoked even if no instances of the class exist yet Static methods are called static because they are resolved at compile time based on the class they are called on and not dynamically as in the case with instance methods which are resolved polymorphically based on the runtime type of the object Examples edit In Java edit In Java a commonly used static method is Math max double a double b This static method has no owning object and does not run on an instance It receives all information from its arguments 2 Copy assignment operators edit Copy assignment operators define actions to be performed by the compiler when a class object is assigned to a class object of the same type Operator methods edit Operator methods define or redefine operator symbols and define the operations to be performed with the symbol and the associated method parameters C example include lt string gt class Data public bool operator lt const Data amp data const return roll lt data roll bool operator const Data amp data const return name data name amp amp roll data roll private std string name int roll Member functions in C editSome procedural languages were extended with object oriented capabilities to leverage the large skill sets and legacy code for those languages but still provide the benefits of object oriented development Perhaps the most well known example is C an object oriented extension of the C programming language Due to the design requirements to add the object oriented paradigm on to an existing procedural language message passing in C has some unique capabilities and terminologies For example in C a method is known as a member function C also has the concept of virtual functions which are member functions that can be overridden in derived classes and allow for dynamic dispatch Virtual functions edit Virtual functions are the means by which a C class can achieve polymorphic behavior Non virtual member functions or regular methods are those that do not participate in polymorphism C Example include lt iostream gt include lt memory gt class Super public virtual Super default virtual void IAm std cout lt lt I m the super class n class Sub public Super public void IAm override std cout lt lt I m the subclass n int main std unique ptr lt Super gt inst1 std make unique lt Super gt std unique ptr lt Super gt inst2 std make unique lt Sub gt inst1 gt IAm Calls Super IAm inst2 gt IAm Calls Sub IAm See also editProperty programming Remote method invocation Subroutine also called subprogram routine procedure or functionNotes edit What is an Object oracle com Oracle Corporation Retrieved 13 December 2013 a b Martin Robert C 2009 Clean Code A Handbook of Agile Software Craftsmanship Prentice Hall p 296 ISBN 978 0 13 235088 4 Meyer Bertrand 1988 Object Oriented Software Construction Cambridge Prentice Hall International Series in Computer Science pp 52 54 ISBN 0 13 629049 3 Bloch Joshua 2018 Effective Java Programming Language Guide third ed Addison Wesley ISBN 978 0134685991 Albahari Joseph C 10 in a Nutshell O Reilly ISBN 978 1 098 12195 2 Abstract Methods and Classes oracle com Oracle Java Documentation Retrieved 11 December 2014 References editJANA DEBASISH 1 January 2005 C and Object oriented Programming Paradigm PHI Learning Pvt Ltd ISBN 978 81 203 2871 6 Sengupta Probal 1 August 2004 Object Oriented Programming Fundamentals And Applications PHI Learning Pvt Ltd ISBN 978 81 203 1258 6 Svenk Goran 2003 Object oriented Programming Using C for Engineering and Technology Cengage Learning ISBN 0 7668 3894 3 Balagurusamy 2013 Object Oriented Programming with C Tata McGraw Hill Education ISBN 978 1 259 02993 6 Kirch Prinz Ulla Prinz Peter 2002 A Complete Guide to Programming in C Jones amp Bartlett Learning ISBN 978 0 7637 1817 6 Conger David 2006 Creating Games in C A Step by step Guide New Riders ISBN 978 0 7357 1434 2 Skinner M T 1992 The Advanced C Book Silicon Press ISBN 978 0 929306 10 0 Love 1 September 2005 Linux Kernel Development Pearson Education ISBN 978 81 7758 910 8 DEHURI SATCHIDANANDA JAGADEV ALOK KUMAR RATH AMIYA KUMAR 8 May 2007 OBJECT ORIENTED PROGRAMMING USING C PHI Learning Pvt Ltd ISBN 978 81 203 3085 6 Retrieved from https en wikipedia org w index php title Method computer programming amp oldid 1187885518, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.