# An introduction to object-oriented programming in MATLAB (2023)

By Stuart McGarrity and Adam Sifounakis, MathWorks

When creating software applications, it is important to organize the various building blocks of your software into related groups. For example, a custom numerical solver may require several configuration parameters and routines to perform a full set of calculations. Object-oriented programming (OOP) allows the grouping of solver configuration parameters (properties) with their functions (methods) into a single definition, orthe classroom. Everything the user needs to run this solver correctly is defined in this class.

An object is an instance of a class. When a program is executed, an object is created based on its class definition and behaves as defined by the class. An object's properties represent its state, and its methods represent all the actions the user can perform. In this way, the author of the code can easily group all the data and functions related to the software system, and the user can easily find and use all the features that the author of the code has developed.

The following example uses object-oriented programming to create an application that will analyze sensor data from an array of sensors.

## Application example: data analysis of a sensor array

A sensor array (Figure 1) is a collection of sensors, usually arranged in an array, used to sample media such as air, water, or soil for radar, sonar, or mobile communications. By sampling time from multiple points in space, you can extract additional information from the media being sampled.

Figure 1. An array of sensors that detect two distant electromagnetic sources at unknown angles.

Our application uses a set of sensors to determine the direction of arrival (DOA) of various distant electromagnetic sources such as radio beacons and radar transmitters. In this scenario, we will try to estimate the angles θ1 and θ2 of the two sources with respect to the direction in which the sensor array is pointed.

## Overview of data and operations

For this application, we will need to store and present the following data:

(Video) Object-Oriented Programming in MATLAB | Master Class with Loren Shure

• Number of sensors and samples
• Data sampled by the sensor
• Sensor sampling rate
• sensor spacing
• Wavelength from distant sources
• wave speed
• The name or description of the sensor data set

We will use a simple technique based on Fast Fourier Transform (FFT) to estimate the DOA of the source. This technique can be divided into parts and implemented as a set of operations. A small number of utility operations will be implemented to facilitate development work. For example, we must:

• Create a dataset from synthetic data or live collected data
• View and modify dataset values ​​and parameters
• Plot sample data to aid in interpretation and confirmation
• Calculate and plot the power spectrum of the data set (using a simple magnitude-squared FFT method)
• Find the peaks of the power spectrum to estimate the DOA of the source

After we have identified the data we need to represent and the activities we need to perform, we can represent the data with class properties and the activities with class methods.

## Data representation with class properties

We start by defining a class to describe an array of sensors. This initial view contains only data items and presents them as class properties.

You define a class in MATLAB with a class definition file, which starts with`classdef`keyword and it ends with`fim`key word. Within the class definition block, additional keyword blocks will describe various aspects of the class, such as class properties and class methods. The definition file shown in Figure 2 describes the class`sad`(sensor array data set) with all the data we need to represent listed in the properties block.

Figure 2. Class definition file`sad.m`with properties.

## Creating an object and accessing properties

To create an object or an instance of the class we defined, we use the command

`>> s = sad;`

To set the value of a property, we specify its name like a struct field s

`>> s.NumSensors = 16;`

We can display the object, see all available properties and current values, by typing its name.

`>> ss = sads with properties: Wavelength: [] c: 300000000 NumSensors: 16 NumSamples: [] Data: [] Spacing: [] SampleRate: [] Name: []`

All properties except`NumSensors`e`c`they are still empty. The data set can now be identified as a`sad`object using`the classroom`function,`It is`function, i`who is that`command, something not possible with frames.

`>> class(es)ans = 'tužan'`

The ability to identify the class of a variable is important for users writing code to work on a dataset, as it allows you to specify the data items that can be accessed and the operations that can be legally performed.

## error checking

If you use structures to represent your data, you can add a new field name at any time by simply specifying a new field name and assigning it a value. This feature is particularly convenient when you are experimenting and prototyping algorithms. However, if you misspell the field name, the new field will be silently added, which can cause a hard-to-diagnose error later.

Unlike a frame, you cannot dynamically add a new property to an object by simply specifying the name of the new property and assigning it a value. If you misspell the name of an object property, MATLAB will immediately throw an error. This extra level of error checking is useful when the object is accessed by users who are less familiar with it than the author, which is common during the development of large applications.

## Data access control

Classes give you a lot of control over access to a property. For example, they allow you to disallow a property from being modified, hide a property, or calculate it dynamically. You control access to properties by specifying property attributes in the class definition file. We extended the class definition file in Figure 2 by splitting the current property list into multiple property blocks, each with unique property attributes:`Get access`,`Constantly`, e`Addicted`(Figure 3).

Figure 3. Class definition file`sad.m`with inherent attributes.

(Video) How to Implement Object-Oriented Programming Principles in MATLAB

You prohibit changing the property by setting`Constantly`attribute. In our example, we will define the speed of light property`c`to be steadfast. Since constant properties do not change, they can be accessed simply by calling the class name.

`>> sads.cans = 300000000`

You can make the property read-only by setting`SetAccess`attribute to private. You can make a property visible only to methods that operate on it by setting it`Get access`assign to private, as we will do with`Wavelength`property.

You can freely change the names or characteristics of the private property without affecting the users of the facility. This "black box" approach to defining a piece of software, known as encapsulation, prevents the object's user from becoming dependent on implementation details or features that could change and break their code.

You specify that the property is calculated only when requested by the setup`Addicted`attribute.

You then specify a get method that is called automatically when the property is accessed. see"Accessing properties using the Get and Set methods"section of this article for details on specifying class methods. In our application we have set`NumSensors`e`NumSamples`properties are dependent.

## Implementation of operations with class methods

The methods or operations that can be performed on the object are specified as a list of functions in the method block. A class can contain many types of methods, each fulfilling a different purpose and each specified differently. The next section describes several of these types of methods.

We will add a method block to the`sad`definition file and add each new method inside this block (Figure 4).

Figure 4. Class definition file`sad.m`with methods, shown in the MATLAB editor. For easier viewing, the code overlay feature is used to hide most of the code.

## Specifying the constructor method

In our example, we will specify a constructor method that allows the user to provide parameters that will be used to create the object. The constructor method usually performs initialization and data validation. The object is now created with

`>> s = sads(Data, Wavelength, SampleRate, Spacing, Name);`

## Implementation of application-specific methods

We will add several methods to implement application-specific operations to be performed on the dataset. Most methods take an object as an input argument (for example,`obj`) and access the object's properties by referencing that variable (for example,`obj.NumSamples`), as in this method:

`function mag = magfft(obj, zpt)mag = zeros(obj.NumSamples, zpt); ...fim`

Although it requires additional syntax, referencing properties via an object variable can help distinguish them from local function variables such as`magazine`above.

## calling methods

Methods are called as functions, with an object passed as one of the arguments. We can estimate the DOA angles of the source by calling`doa`method of our class.

`>> kutovi = dva kuta = -10.1642 18.9953`

The DOA angles approximate the true source locations shown in Figure 1, namely -10° and 20°.

## Accessing properties with the Get and Set methods

You can validate properties or implement dependent properties by specifying associated aggregate and getter methods. Here is the get method for`NumSensors`property.

`functionNumSensors = get.NumSensors(obj)NumSensors = size(obj.Data, 2);fim`

The get and set methods are called automatically when properties are accessed, for example with

`>> N = s.NumSensors;`

Overloading allows you to redefine existing MATLAB functions to work on your object by providing a function with that name in your method list. We will include an overloaded file in our application`land`method, providing a dataset visualization feature familiar to many MATLAB users (Figure 5).

`>> rate(s)`
(Video) Object-Oriented Programming with MATLAB

Figure 5. Specialized overloaded plotting method for sensor array dataset.

This custom plotting method presents the information in the most appropriate way for this data set, labeling it with all available information. It only runs on the objects it's defined for - a much more robust approach than manipulating the directory order on the path.

If you want specialized behavior for your class, you can also overload basic operators and even index using specially named methods.

## Further development of the application

The class we create in this example represents the dataset of our sensor array and allows us to easily perform complex and specialized analysis on our data, including the main operation of direction finding. We can use this class to quickly evaluate the performance of an FFT-based technique in different scenarios.

We could extend the application using additional OO techniques. For example, we could do the following:

• Defining subclasses of existing classes (reusing a broader category definition to define a more specific subcategory) with inheritance
• Specify static methods, allowing you to define an operation for the class as a whole
• Use manipulative classes with reference behavior, which allows us to create data structures like linked lists or work with large data sets without copying
• Define events and listeners, allowing you to monitor object properties or actions

These techniques improve our ability to manage complexity, allowing us to better define relationships and behavior in an application.

(Video) Introduction to Object-Oriented Programming and Classes in MATLAB

Because it was built using OO techniques, the application is now robust enough to be used and maintained by others and can be integrated with other applications across the organization.

Published in 2020

### used products

• MATLAB
• Statistics and Machine Learning Toolbox

### To know more

• Features of object-oriented programming
• Learn to code with MATLAB

### See articles for related resources

• Technical computing

### See articles for related industries

• Communication infrastructure
(Video) Mastering Programming with MATLAB: (15) Introduction to Object Oriented Programming

## FAQs

### An introduction to object-oriented programming in MATLAB? ›

Object-oriented programming is a design approach that enables you to programmatically define structures called objects that combine data (properties) together with functions that operate on that data (methods). In MATLAB®, you can create objects that model the behavior of devices and systems in the real world.

Can you do object-oriented programming in MATLAB? ›

The MATLAB® language enables you to create programs using both procedural and object-oriented techniques and to use objects and ordinary functions together in your programs.

What is the difference between MATLAB classes and Python classes? ›

The biggest technical difference between MATLAB and Python is that in MATLAB, everything is treated as an array, while in Python everything is a more general object. For instance, in MATLAB, strings are arrays of characters or arrays of strings, while in Python, strings have their own type of object called str .

What is MATLAB introduction and uses? ›

Since it was initially known as the matrix programming language, MATLAB is an acronym for "Matrix Laboratory." It is a programming language of the fourth generation. It is a multi-paradigm, MATLAB. Therefore, it can be used with a variety of programming paradigms, including functional, Visual, and Object-Oriented.

What is class in programming MATLAB? ›

A MATLAB® class definition is a template whose purpose is to provide a description of all the elements that are common to all instances of the class. Class members are the properties, methods, and events that define the class.

What programming language is closest to MATLAB? ›

Python is clear and easily readable. It is syntactically similar to Matlab. It provides a command-line interface and embedded tools to carry out mathematical functions.

Is MATLAB still used for machine learning? ›

With just a few lines of MATLAB code or with low-code apps, you can incorporate machine learning into your applications whether you are building models, engineering features, or generating code and deploying to embedded systems.

Which is more difficult MATLAB or Python? ›

The OOP in MATLAB is more advanced and complex, which to some can be more confusing. That being said, MATLAB is generally a more advanced language while Python is more of a beginner's language. Therefore, just because MATLAB may be more complex and confusing at first, with practice, it will become easier to grasp.

How long does it take to learn MATLAB? ›

If you're a novice programmer, you can expect it to take a little longer than if you were a more seasoned programmer. Someone who can afford to devote all their time to MATLAB can finish learning the language in two weeks. If you have a lot of other responsibilities, however, it will take you longer to complete.

Is MATLAB easier or harder than Python? ›

Python is more simple to work with than Matlab. Matlab has better numerical skills. Python's graphical capabilities rely on third-party libraries. When compared to Python, Matlab's graphical capabilities are better.

### What is MATLAB used for in real life? ›

Millions of engineers and scientists worldwide use MATLAB for a range of applications, in industry and academia, including deep learning and machine learning, signal processing and communications, image and video processing, control systems, test and measurement, computational finance, and computational biology.

What are five uses of MATLAB? ›

Typical uses include:
• Math and computation.
• Algorithm development.
• Modeling, simulation, and prototyping.
• Data analysis, exploration, and visualization.
• Scientific and engineering graphics.
• Application development, including Graphical User Interface building.

What are five applications of using MATLAB? ›

Applications
• General Applications. Example models illustrating general applications.
• Automotive Applications. Model and simulate automotive systems using Simulink® and other MathWorks® products.
• Aerospace Applications. ...
• Industrial Automation Applications. ...
• Signal Processing. ...
• Control Design. ...
• Physical Modeling. ...
• Complex Logic.

What is an example of object programming? ›

Significant object-oriented languages include Java, C++, C#, Python and Javascript. The simplest way to explain object-orientated programming to a kid is to use something like a car as an example. A car has a model name, a colour, a year in which it was manufactured, an engine size and so on.

What are methods in MATLAB? ›

Methods are the operations defined by a class. Methods can overload MATLAB® functions to perform the operations on objects of the class. MATLAB determines which method or function to call based on the dominant argument. Class constructor methods create objects of the class and must follow specific rules.

How do you create an object in MATLAB? ›

To create an object, first, we need to create a class, using ' classdef ' we create a class, in class we take some properties and end the class and then we take methods some methods using function statements after all these lastly we end the class with an end statement.

Is it hard to learn MATLAB? ›

MATLAB® creates an environment where issues and resolutions are expressed in familiar mathematical notation. MATLAB® is not hard to learn if you go for any professional course. It is ideal for engineering graduates and IT professionals willing to develop MATLAB® skills in their related fields.

Is MATLAB based on C or C++? ›

John Little and programmer Steve Bangert re-programmed MATLAB in C, created the MATLAB programming language, and developed features for toolboxes.

Do people still use MATLAB? ›

User Base. Both Python and MATLAB have large user bases, though the user base for MATLAB is primarily comprised of engineers and scientists. As of May 2022, LinkedIn searches return about 7.6 million Python users and 4.1 million MATLAB users.

Which engineers use MATLAB the most? ›

Mechanical engineers of Design and manufacturing field use MATLAB and Simulink heavily. You would be surprised to know that MATLAB also forms the based for different CAD software as well as designing software just like SOLIDWORKS.

### Is Python going to replace MATLAB? ›

Python can replace MATLAB

Many people have successfully made the switch from MATLAB to Python. The SciPy stack has almost everything you might need for scientific computing, such as numpy for numerical computation, matplotlib for plotting and scikit-learn for machine learning.

Which is better for deep learning Python or MATLAB? ›

For the vast majority of readers, Python is the better choice because it's free to use and get started with, the libraries make it a more versatile language, and it's just a better language for data science, machine learning, software development, and programming.

What are the disadvantages of MATLAB programming language? ›

The first disadvantage is that it is an interpreted language and, therefore, may execute more slowly than compiled language. This problem can be check by properly structuring the MATLAB program. A full copy of MATLAB is five to ten times more costly than a conventional C or FORTRAN compiler.

Is MATLAB a valuable skill? ›

MATLAB (matrix laboratory) is one of the fundamental and leading programming language and is a must learn skill for anyone who want to develop a career in engineering, science or related fields.

What is the best way to learn MATLAB? ›

Best MATLAB Courses
1. Become a Good Matlab Programmer in 30 Days (Udemy)
2. Master MATLAB Through Guided Problem Solving (Udemy)
3. Introduction to Programming with MATLAB (Coursera)
5. MATLAB Master Class: Go from Beginner to Expert in MATLAB (Udemy)
6. MATLAB and Octave for Beginners (edX)
Mar 6, 2023

Is MATLAB enough for a job? ›

The industry has some familiar buzz that learning MATLAB will not be a good opportunity for a better career. But this is not fully true. Yes, it is an acceptable reason that salary or company structure will never be able to touch available popular jobs on other programming technologies.

What should I know before learning MATLAB? ›

It is also recommended that learner should have a good knowledge of mathematical terms, like matrix, array, algebra, numbers, polynomial, differential equations. And third, you should have a passion for learning new things, and have decided to work with MATLAB.

How much does MATLAB course cost? ›

Learn From Top MATLAB Experts In The Field - MATLAB Basics, High Quality Code, Data Visualization, Loops and much more! Rating: 4.3 out of 5947 reviews10 total hours100 lecturesBeginnerCurrent price: \$24.99Original price: \$109.99.

How good is MATLAB for deep learning? ›

MATLAB has a variety of ways to interact and transfer data between deep learning frameworks. MATLAB supports ONNX to import and export models between other frameworks. A model designed in PyTorch, for example, can be brought into MATLAB, and models trained in MATLAB can be exported using the ONNX framework.

Why do we use MATLAB in engineering? ›

MATLAB Speaks Math

Engineers and scientists need a programming language that lets them express matrix and array mathematics directly. Linear algebra in MATLAB is intuitive and concise. The same is true for data analytics, signal and image processing, control design, and other applications.

### Do real engineers use MATLAB? ›

They can use MATLAB to check for equation solutions, integrations, derivations and to optimize results in design problems that involve multiple varying parameters. They can also use it in their laboratory classes to process experimental data and to make plots to visualize experiments and extract conclusions.

Why does NASA use MATLAB? ›

The Space Launch System (SLS) rocket is designed to carry humans into deep space. Using MATLAB® and Simulink® for simulation and validation, the complex mission management logic is designed to ensure that the SLS can correctly respond to nominal and off-nominal events.

What industry uses MATLAB? ›

MATLAB and Simulink are used throughout the automotive, aerospace, communications, electronics, and industrial automation industries as fundamental tools for research and development. They are also used for modeling and simulation in increasingly technical fields, such as financial services and computational biology.

What are the benefits of learning MATLAB? ›

• Implement and test your algorithms easily.
• Develop the computational codes easily.
• Debug easily.
• Use a large database of built in algorithms.
• Process still images and create simulation videos easily.
• Symbolic computation can be easily done.
• Call external libraries.
Mar 3, 2023

What is the main function of MATLAB? ›

MATLAB® program files can contain code for more than one function. In a function file, the first function in the file is called the main function. This function is visible to functions in other files, or you can call it from the command line.

Is MATLAB good for robotics? ›

Simulation

Today, MATLAB is considered as an excellent platform for simulating the behavior of collaborative robots. Using the Robotics System Toolbox, professors and students are able not only to create virtual robots but also to simulate their interactions with their environment and shared workspace.

What is MATLAB used for in machine learning? ›

MATLAB provides interactive tools that make it easy to perform a variety of machine learning tasks, including connecting to and importing data. Apps can generate MATLAB code, enabling you to automate tasks. Oftentimes, data has missing or incorrect values.

Is MATLAB better than Python? ›

MATLAB has very strong mathematical calculation ability, Python is difficult to do. Python has no matrix support, but the NumPy library can be achieved. MATLAB is particularly good at signal processing, image processing, in which Python is not strong, and performance is also much worse.

What is MATLAB used for in students? ›

Use MATLAB to analyze data for homework, conduct research, and develop programming skills that prepare you for your future career.

What is a good example of object-oriented programming? ›

Java, Python, and C++ are examples of popular class-based OOP languages. Multiple independent objects can be instantiated—or represented—from the same class, and they can interact in a variety of ways. Data Structures are also one of the important topics in OOPs languages like C.

### How to create an object in OOP? ›

Creating an Object
1. Declaration − A variable declaration with a variable name with an object type.
2. Instantiation − The 'new' keyword is used to create the object.
3. Initialization − The 'new' keyword is followed by a call to a constructor. This call initializes the new object.

What are the 3 tools in MATLAB? ›

Datafeed Toolbox™ (Datafeed Toolbox) Financial Toolbox™ (Financial Toolbox) Image Processing Toolbox™ (Image Processing Toolbox)

What is object oriented programming in MATLAB? ›

Object-oriented programming is a design approach that enables you to programmatically define structures called objects that combine data (properties) together with functions that operate on that data (methods). In MATLAB®, you can create objects that model the behavior of devices and systems in the real world.

What are the 4 image types in MATLAB? ›

MATLAB supports the following graphics file formats, along with others:
• BMP (Microsoft® Windows® Bitmap)
• GIF (Graphics Interchange Files)
• HDF (Hierarchical Data Format)
• JPEG (Joint Photographic Experts Group)
• PCX (Paintbrush)
• PNG (Portable Network Graphics)
• TIFF (Tagged Image File Format)
• XWD (X Window Dump)

How do you create a character in MATLAB? ›

Description. C = char( A ) converts the input array, A , to a character array. For instance, if A is a string, "foo" , c is a character array, 'foo' . C = char(A1,...,An) converts the arrays A1,...,An into a single character array.

How do you define a variable type in MATLAB? ›

Specify Variable Data Types
1. Double-click the MATLAB Function block to open the MATLAB Function Block Editor.
2. Open the Symbols pane. In the Function tab, click Edit Data.
3. Select the variable.
4. In the Property Inspector, in the Properties tab, select the data type from the Type property.

How to find type of object in MATLAB? ›

1. To get the data type, or class, of a variable, use the “class” function.
2. To determine if a variable has a specified data type, use the “isa” function.
3. For a list of functions that determine if variables have specific attributes, see “is*”.

Can we implement CNN in MATLAB? ›

Using MATLAB® with Deep Learning Toolbox™ enables you to design, train, and deploy CNNs.

Can we use Java in MATLAB? ›

Every installation of MATLAB includes Java Virtual Machine (JVM™) software. To create and run programs that access Java objects, use the Java interpreter via MATLAB commands.

Can MATLAB be used for artificial intelligence? ›

You use MATLAB to develop and train the AI model and incorporate the trained model into Simulink for system-level simulation. You might use software like the Unreal Engine to synthesize camera images to feed the AI model and for 3D visualization.

### Can you code a Raspberry Pi with MATLAB? ›

With MATLAB for Raspberry Pi programming, you can: Analyze Raspberry Pi sensor data and develop algorithms using thousands of prebuilt functions for image processing, signal processing, mathematical modeling, and more. Quickly visualize your data using the vast array of MATLAB plot types.

Can MATLAB do neural network? ›

With just a few lines of code, MATLAB lets you develop neural networks without being an expert. Get started quickly, create and visualize neural network models, integrate them into your existing applications, and deploy them to servers, enterprise systems, clusters, clouds, and embedded devices.

How to write neural network code in MATLAB? ›

Workflow for Neural Network Design
1. Collect data.
2. Create the network — Create Neural Network Object.
3. Configure the network — Configure Shallow Neural Network Inputs and Outputs.
4. Initialize the weights and biases.
5. Train the network — Neural Network Training Concepts.
6. Validate the network.
7. Use the network.

Can MATLAB implement algorithms? ›

MATLAB provides the tools you need to transform your ideas into algorithms, including: Thousands of core mathematical, engineering, and scientific functions. Application-specific algorithms in domains such as signal and image processing, control design, computational finance, and computational biology.

Why do engineers use MATLAB instead of Python? ›

MATLAB language is the first (and often only) programming language for many engineers and scientists because the matrix math and array orientation of the language makes it easy to learn and apply to engineering and scientific problem-solving.

Do computer engineers use MATLAB? ›

Computer systems engineers rely on MATLAB and Simulink to model many types of computer subsystems including: Network and attached storage.

Does MATLAB use C or C++? ›

The MATLAB Engine API for C and C++ enables your applications to use and modify variables in the MATLAB workspace, call MATLAB functions, and evaluate MATLAB commands. Your C and C++ applications can also start and stop MATLAB instances or connect to an existing MATLAB instance.

What is the real world use of MATLAB? ›

Millions of engineers and scientists worldwide use MATLAB for a range of applications, in industry and academia, including deep learning and machine learning, signal processing and communications, image and video processing, control systems, test and measurement, computational finance, and computational biology.

Does MATLAB know what pi is? ›

In MATLAB pi gives the value of the mathematical constant π = 3.1415926535897.... MATLAB's value of π (lower case pi) is correct to around 15 decimal digits. Use the format command to display all digits.

What programming language does Raspberry Pi use? ›

3. Available Programming Languages. The Raspberry Pi single board computer was designed with the idea to encourage youngsters to join the field of programming. The Pi in Raspberry Pi comes from the Python language, which denotes its use in the computer.

### What programming language does Raspberry Pi run on? ›

C or C++ are generally one of the three languages that's most widely used on the Raspberry Pi, the other being Python.

## Videos

1. Object oriented programming in matlab
(CodeTheMath)
2. Object oriented Programming with MATLAB Classes and Objects
(TechDots Connect)
3. Object-oriented Programming in 7 minutes | Mosh
(Programming with Mosh)
4. Object-Oriented Programming Onramp Overview
(MATLAB)
5. Object Oriented Programming with Matlab
(tutorials for beginners)
6. Object-Oriented Programming in Matlab: Part 1 (of 14)
(packardEDU)
Top Articles
Latest Posts
Article information

Author: Laurine Ryan

Last Updated: 09/25/2023

Views: 5582

Rating: 4.7 / 5 (57 voted)

Author information

Name: Laurine Ryan

Birthday: 1994-12-23

Address: Suite 751 871 Lissette Throughway, West Kittie, NH 41603

Phone: +2366831109631

Job: Sales Producer

Hobby: Creative writing, Motor sports, Do it yourself, Skateboarding, Coffee roasting, Calligraphy, Stand-up comedy

Introduction: My name is Laurine Ryan, I am a adorable, fair, graceful, spotless, gorgeous, homely, cooperative person who loves writing and wants to share my knowledge and understanding with you.