Software Engineering Concepts
Posted on January 24, 2008 by Jonathan Carr |
Here are a few definitions that every computer scientist and software engineer should know as a strong foundation for programming.
Encapsulation: all of an object’s data is contained within the object and access to it is restricted to members of that class. Variables or fields are usually private and methods or functions are usually public in most object-oriented languages.
Information Hiding: Objects communicate with one another across well-defined interfaces, but are not allowed to know how other objects are implemented. Implementation details are hidden within the objects themselves. A good example is how a driver can have no knowledge about how engines, transmissions, or brakes work as long as the driver knows how to use the pedals, shifter, and steering wheel.
Inheritance: New classes of objects are derived by absorbing characteristics of existing classes and adding unique characteristics of their own. For example, an object of class “maple” has the characteristics of the more general class “tree,” but more specifically, the seeds and leaves are shaped differently.
Object-Oriented Design (OOD): Modeling software in terms similar to those that people use to describe real-world objects. OOD uses class relationships, where objects of a certain class, such as a class of trees, have the same characteristics. Maple, Oak, Redwood, and Birch all have similar characteristics such as roots, trunk, bark, and leaves.
Object-Oriented Programming (OOP): Implementing an object-oriented design as a working system. Languages that are used to build such systems include but are not limited to C++, Java, and C#.
Order of Magnitude (Big O): The measure of efficiency for an algorithm. Lets say a search algorithm starts at the beginning of a list and proceeds through it until it has found what it is looking for. This algorithm would have an order of magnitude of O(n) which is considered linear. An algorithm which uses a binary search method on an ordered list has logarithmic timing which is expressed as O(log n). The most efficient timing of an algorithm possible is that of constant timing. Such an algorithm is expressed as O(1) meaning it would find what it is looking for the first pass every time.
Overloading: Using multiple functions which have the same name but different parameters.
Sort(int a, int b, int c);
Sort(int a, int b);
Sort(Int a, double d, char f);
Unified Modeling Language (UML): A graphical language that allows people who design software systems to use an industry standard notation to represent them.
References:
Deitel and Deitel. Java How to Program 7th Edition. Pearson-Prentice Hall Books. 2007. Upper Saddle River, NJ.
Image from Fisk University.
Comments
One Response to “Software Engineering Concepts”
Leave a Reply
[...] Object-Oriented Programming (OOP): Implementing an object-oriented design as a working system. Languages that are used to build such systems include but are not limited to C++, Java, and C#. Order of Magnitude (Big O): The measure of … read more [...]