<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Technology Kills &#187; Fender</title>
	<atom:link href="http://technologykills.com/tag/fender/feed/" rel="self" type="application/rss+xml" />
	<link>http://technologykills.com</link>
	<description>Deconstructing technology, one piece at a time...</description>
	<lastBuildDate>Fri, 13 Jan 2012 19:56:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Object-Oriented Scripting (OOP or OOS)</title>
		<link>http://technologykills.com/2009/03/02/object-oriented-scripting-oop-or-oos/</link>
		<comments>http://technologykills.com/2009/03/02/object-oriented-scripting-oop-or-oos/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 09:40:37 +0000</pubDate>
		<dc:creator>madzoombax</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Empty Space]]></category>
		<category><![CDATA[Factories]]></category>
		<category><![CDATA[Falling From The Sky]]></category>
		<category><![CDATA[Fender]]></category>
		<category><![CDATA[Look At It This Way]]></category>
		<category><![CDATA[Newcomer]]></category>
		<category><![CDATA[Object Oriented Programming]]></category>
		<category><![CDATA[Oop]]></category>
		<category><![CDATA[Oos]]></category>
		<category><![CDATA[Power Button]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[Programming Languages]]></category>
		<category><![CDATA[Quite Some Time]]></category>
		<category><![CDATA[Rain Drop]]></category>
		<category><![CDATA[Ray Of Light]]></category>
		<category><![CDATA[Scripters]]></category>
		<category><![CDATA[Scripting Languages]]></category>
		<category><![CDATA[Short Answer]]></category>
		<category><![CDATA[Single Thing]]></category>
		<category><![CDATA[Snowflake]]></category>
		<category><![CDATA[Space Debris]]></category>

		<guid isPermaLink="false">http://technologykills.com/?p=48</guid>
		<description><![CDATA[Programming languages have been using Objects for quite some time. Popular languages like Java are heavily based on the concept. Lately, scripting languages have also been swooping in and picking up aspects of Object-Oriented Programming, integrating them into their own language.
The problem is that many scripters don't have a good grasp of what OOP (Object-Oriented Programming) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://technologykills.com/tag/programming-languages/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Programming Languages">Programming languages</a> have been using Objects for <a href="http://technologykills.com/tag/quite-some-time/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Quite Some Time">quite some time</a>. Popular languages like Java are heavily based on the concept. Lately, scripting languages have also been swooping in and picking up aspects of Object-Oriented Programming, integrating them into their own language.</p>
<p>The problem is that many scripters don't have a good grasp of what <a href="http://technologykills.com/tag/oop/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Oop">OOP</a> (Object-Oriented Programming) really involves, and admittedly it can seem like a daunting concept to the newcomer. This short explanation and tutorial will explain exactly what <a href="http://technologykills.com/tag/oop/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Oop">OOP</a> means, and how to use it in everyday scripting tasks.</p>
<p>--</p>
<p><strong>What is an object in real terms?</strong></p>
<p><strong></strong>The <a href="http://technologykills.com/tag/short-answer/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Short Answer">short answer</a>: anything and everything</p>
<p>I like objects. The world is built with objects. In fact, you could think of <strong>every single thing</strong> in the world, including the world itself, as an object. In fact, this is the basis of OOP. It is modeled around the concept of objects and their interactions with each other.</p>
<p><a href="http://technologykills.com/tag/look-at-it-this-way/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Look At It This Way">Look at it this way</a>: The screen you're reading this on is an object; so it its Power button. So is the chair you're sitting in. You're an object, and so is your nose, and your left thumbnail. The <a href="http://technologykills.com/tag/ray-of-light/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Ray Of Light">ray of light</a> that is (or was) shining in your window is (or was) an object. That car driving by by was a passing object. So were its wheels, and its left <a href="http://technologykills.com/tag/fender/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Fender">fender</a>, and its passengers. Each rain-drop, <a href="http://technologykills.com/tag/snowflake/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Snowflake">snowflake</a>, or ice-ball <a href="http://technologykills.com/tag/falling-from-the-sky/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Falling From The Sky">falling from the sky</a> is an object.</p>
<p><a href="http://technologykills.com/tag/factories/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Factories">Factories</a> manufacture objects. But the factory itself is an object, too. So is each piece of machinery used to create the objects, and each of the workers that run the machinery. The ground the factory is built on is an object, and the whole planet itself is an object, along with each of the other planets, stars, and space debris out there. Hell, you can even think of <a href="http://technologykills.com/tag/empty-space/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Empty Space">empty space</a> as an object.</p>
<p> </p>
<p><strong>But if they're all objects, what makes them different?</strong></p>
<p><strong></strong>The short answer: attributes</p>
<p><strong></strong>Simply put, each object has certain properties, or attributes, which describe it. For this document, attributes and properties can be considered the same thing.</p>
<p>Think about a person's attributes. They might have brown hair--that's an attribute (a property that describes them). Their hair may be long--that's another attribute. They may be generally nice (a property that describes their behavior). They may prefer a certain brand of clothing, or enjoy a certain type of food. They might have high aspirations for the future, or think that we're doomed because of today's financial crisis. Those are <em>all</em> properties which describe a person.</p>
<p>Every object has properties. A car has a color, a shape, a number of cylinders, certain features are either available or unavailable in certain models... the list goes on. The planets are round. The sun is bright. The sky is blue. The winter wind is cold. The rain is wet, and transparent. Every object can by described by listing all of its properties.</p>
<p>Obviously, for real world objects this list of properties can be ridiculously extensive. In programming terms, it is usually manageable. But this is how objects in OOP are described.</p>
<p>If you have an Invoice object, it might have the following properties:</p>
<ul>
<li>seller</li>
<li>buyer</li>
<li>items</li>
<li>subtotal</li>
<li>tax</li>
<li>shipping</li>
</ul>
<p>Notice that most of the things you would normally see on an invoice are there. That's because they're part of the invoice--they describe it. That invoice wouldn't be that invoice if it didn't have that exact seller, or that exact buyer, or subtotal. That's what makes it a unique invoice.</p>
<p>But not everything on the invoice is necessarily a property. Notice there is no <strong>total</strong> property defined. That's because the total changes depending on other things--<strong>subtotal, tax, </strong>and<strong> shipping</strong>. Since you already know those three things, you can instead instruct the invoice to add the three fields together and calculate the total. We'll cover that next.</p>
<p> </p>
<p><strong>So you have all these colorful objects, how do they actually do what they do?</strong></p>
<p><strong></strong>The short answer: methods</p>
<p>Your neighbor's drive to work every day is a method, or function. Their car merging into another lane in traffic is a method. Every action performed anywhere can be thought of as a method. In fact, often the term <strong>action</strong> is used instead of method, which makes the concept even easier to understand.</p>
<p>Every object has (or doesn't have) one or more methods (actions) it can perform which allow it to do what it does.</p>
<p>When you walk to the store, it could be described in programming terms by a call to a mythical walkTo("Corner grocery store") function. The sun might be performing a shineOn("Earth") function right now, just as the earth may be performing it's rotateOn("Axis") and rotateAround("Sun") functions at this very moment. NASA has been performing a goTo("Mars") method for an extraordinarily long time.</p>
<p>You see, a method, or function, could describe every action performed--anywhere--by anyone--ever.</p>
<p>This is how objects in OOP perform actions. Let's take our Invoice object example from above. It needs some actions, too:</p>
<p> </p>
<ul>
<li>calculateTotal() - this will figure out the total to print on the invoice</li>
<li>send() - This will send the invoice</li>
</ul>
<p> </p>
<p><strong>So what the hell's a Class?</strong></p>
<p><strong></strong>Think of it as a template for a single object. A wrapper that describes a generic object. It defines what properties an object has, and what methods an object can perform.</p>
<p>The class is how your program or script and make use of the object. For our Invoice object, we would have an Invoice class that defines what an invoice is.</p>
<p>When your program creates an invoice, it might look something like this, in pseudo-code:</p>
<p style="padding-left: 30px; ">myInvoice = new Invoice</p>
<p>We now have created an <strong>instance</strong> of the Invoice class, meaning we have created a new object that represents a single Invoice. </p>
<p>Now, let's set the invoice properties:</p>
<p style="padding-left: 30px; ">myInvoice-&gt;seller = bob smith<br />
myInvoice-&gt;buyer = gordon freeman <br />
myInvoice-&gt;subtotal = 10.00<br />
myInvoice-&gt;tax = 0.00<br />
myInvoice-&gt;shipping = 5.00</p>
<p>The invoice is no longer a generic invoice. This is now a unique object that has the properties youv'e given it.</p>
<p>So now you have an object sitting there. How do you use it? You access its methods. Again, in pseudo-code, you might do something like this:
</p>
<p style="padding-left: 30px; ">myInvoice-&gt;calculate() <em>- determine and save the total<br />
<span style="font-style: normal;">myInvoice-&gt;validate() </span>- make sure the invoice is proper<br />
<span style="font-style: normal;">myInvoice-&gt;send() </span>- send the invoice to the recipient. </em></p>
<p>Normally there would be more, and more useful, actions than this, but hopefully you get the gist.</p>
<p><strong>Is that it?</strong></p>
<p>That can be it. With that concept of objects, you can start with a tutorial in your OOP language or package of choice. There are many, many more advanced topics to get into, but that is for you to discover as a new Object-Oriented programmer.</p>
<p><strong>So go program with objects, you object!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://technologykills.com/2009/03/02/object-oriented-scripting-oop-or-oos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching using disk: basic
Object Caching 500/590 objects using disk: basic

Served from: technologykills.com @ 2012-05-21 19:26:35 -->
