This document discusses object-oriented programming (OOP) and dispels some common myths about it. It provides definitions of OOP and discusses its core concepts like abstraction, encapsulation, inheritance and polymorphism. While OOP is a popular paradigm, it is not a panacea and has some costs like increased complexity. The document analyzes some flawed arguments about OOP and whether a language is "purely" object-oriented. It also examines if some perceived benefits of OOP like reusability have been fully realized. Overall, OOP is presented as a flexible approach but its success depends more on how it is applied than the paradigm itself.
Building DSLs: Marriage of High Essence and Groovy MetaprogrammingSkills Matter
DSLs or Domain Specific Languages focus on a domain or a particular problem. They serve as an effective human-machine interaction tool as they're highly expressive. Their scope is fairly focused and that keeps them simple and small from the user's point of view. However, designing and implementing DSLs is not easy. Typically this involves steep learning curve and difficult parsing techniques. This is where Groovy comes in. You can take advantage of the flexible syntax of Groovy and it's metaprogramming capability to create what are called internal DSLs, that is, DSLs hosted using a higher level language.
In this fast paced highly interactive presentation you will start out learning the characteristics and types of DSLs. Then you will learn about the challenges in designing DSLs and deep dive into Groovy features that can ease the pain of implementing DSLs. Then, using some live coding, Venkat will show you how to create and implement internal DSLs using Groovy. Along the way you'll learn some tricks to facilitate desirable syntax for your DSL.
Prepare for a PHP job interview by quickly going through common questions and answers. This is an exhaustive list of questions along with answers, for more visit - https://www.edupro.xyz/php-oops-interview-questions/
Building DSLs: Marriage of High Essence and Groovy MetaprogrammingSkills Matter
DSLs or Domain Specific Languages focus on a domain or a particular problem. They serve as an effective human-machine interaction tool as they're highly expressive. Their scope is fairly focused and that keeps them simple and small from the user's point of view. However, designing and implementing DSLs is not easy. Typically this involves steep learning curve and difficult parsing techniques. This is where Groovy comes in. You can take advantage of the flexible syntax of Groovy and it's metaprogramming capability to create what are called internal DSLs, that is, DSLs hosted using a higher level language.
In this fast paced highly interactive presentation you will start out learning the characteristics and types of DSLs. Then you will learn about the challenges in designing DSLs and deep dive into Groovy features that can ease the pain of implementing DSLs. Then, using some live coding, Venkat will show you how to create and implement internal DSLs using Groovy. Along the way you'll learn some tricks to facilitate desirable syntax for your DSL.
Prepare for a PHP job interview by quickly going through common questions and answers. This is an exhaustive list of questions along with answers, for more visit - https://www.edupro.xyz/php-oops-interview-questions/
A step-by-step tutorial to start a deep learning startup. Deep learning is a specialty of artificial intelligence, based on neural networks. I explain how I launched my face recognition startup: Mindolia.com
Object Oriented Programming : A Brief History and its significanceGajesh Bhat
A Brief history and significance of Object Oriented Programming and about its past and present. Presented as a Part of Class assignment for Visual Programming Class.
This is an intermediate conversion course for C++, suitable for second year computing students who may have learned Java or another language in first year.
For novice programmers, it is difficult to decide on which programming language to learn first, or which one to try out next? The choice is vast and the complexities many. The author analyses various programming languages, and suggests making a choice based on the programmers’ interests and current software trends.
* How to build a great career?
* What is the easiest and most comfortable way to grow in my career?
* What is the key to grow big and succeed? Should I be a generalist or a specialist to grow in my career?
* Should I gain more “hard skills” or “soft skills”?
* How do I know where to focus for growing in my career?
* How do I survive and thrive in this chaotic & ever changing world?
Check out this presentation that answers these questions in the form of 6 specific tips.
A step-by-step tutorial to start a deep learning startup. Deep learning is a specialty of artificial intelligence, based on neural networks. I explain how I launched my face recognition startup: Mindolia.com
Object Oriented Programming : A Brief History and its significanceGajesh Bhat
A Brief history and significance of Object Oriented Programming and about its past and present. Presented as a Part of Class assignment for Visual Programming Class.
This is an intermediate conversion course for C++, suitable for second year computing students who may have learned Java or another language in first year.
For novice programmers, it is difficult to decide on which programming language to learn first, or which one to try out next? The choice is vast and the complexities many. The author analyses various programming languages, and suggests making a choice based on the programmers’ interests and current software trends.
* How to build a great career?
* What is the easiest and most comfortable way to grow in my career?
* What is the key to grow big and succeed? Should I be a generalist or a specialist to grow in my career?
* Should I gain more “hard skills” or “soft skills”?
* How do I know where to focus for growing in my career?
* How do I survive and thrive in this chaotic & ever changing world?
Check out this presentation that answers these questions in the form of 6 specific tips.
Expertise in software architecture and design is key for designing and implementing high-quality enterprise software systems. This session covers how fundamental but powerful design principles can be applied in practice for software architecture and design. By attending this session, the participants will get the following benefits: a) Knowledge of key fundamental design principles b) How design patterns and architectural styles naturally result from applying principles, and c) How smells can be refactored by applying principles.
Creating high-quality designs by applying relevant patterns is a key skill of an architect. When you learn patterns by “discovering” them through real-world examples and case studies, you’ll remember them forever. The special feature of this presentation: First a design problem is presented and when you refactor it, you’ll discover that it is actually a design pattern (that’s an unusually effective way to discover patterns)!
C, C++ and Java
•How Java is differ from C programming
•How Java is differ from C++ programming
•Java and Internet
•Java and World Wide Web
•Supported system, Hardware and Software Requirements
•Java Environment
Boost Your IT Career with IEEE's Software Engineering Certifications Ganesh Samarthyam
Are you a student searching for your first job in the IT industry? Are you a IT professional looking for enhancing your skills, get noticed and get promoted? If so, this presentation is for you: this short presentation provides you with a quick overview of IEEE's Software Engineering certifications. Student or professional - with IEEE's SE certifications are sure to provide the much needed boost to your IT career.
In this article, we will get the fundamentals of OOPs. Object Oriented Development is a model that provides many ideas such as inheritance, data binding, polymorphism etc.
The course aims to provide you with an understanding of the fundamental concepts involved in object-oriented programming (object, class, protocol, hierarchy, inheritance, encapsulation, polymorphism and collaboration).
The programming language you will use is Java. However, the purpose of the course is not to teach you the minutiae of the Java language, but rather to teach you fundamental object-oriented programming concepts and skills that will be transferable to any object¬ oriented language
A Survey of Object Oriented Programming LanguagesMaya Hris.docxdaniahendric
A Survey of Object Oriented Programming Languages
Maya Hristakeva, RadhaKrishna Vuppala
Univ. of California, Santa Cruz
{mayah,vrk}@soe.ucsc.edu
1 Abstract
Object-oriented programming has become a very important programming paradigm of our times.
From the time it was brought into existence by Simula, object-oriented programming has seen wide
acceptance. Object-oriented programming languages (OOPLs) directly support the object notions of
classes, inheritance, information hiding (encapsulation), and dynamic binding (polymorphism). There
is a wide variety of implementations for each of these concepts, and there is no general agreement as to
how a particular concept must be interpreted. This survey takes a detailed look at some of the concepts
considered fundamental to object-orientation, namely inheritance and polymorphism. Different aspects
of inheritance and polymorphism are implemented in various popular OOPLs. We conclude with the
observation that there is still lot of work to be done to reach a common ground for these crucial features
of OOPLs. This survey presents a detailed comparison of Java, C++, C# , Eiffel, Smalltalk, Ruby and
Python in terms of their inheritance and polymorphism implementations. The paper also presents a
compilation of the observations made by several earlier surveys [1, 27].
2 Introduction
There is a big variety of programming languages catering to various kinds of development require-
ments. Three of the main categories are procedural languages (e.g. C, Pascal, etc.), functional languages
(e.g. Haskel, Ocaml, etc.), and object-oriented programming languages (e.g. C++, Java, etc.). The
object-oriented design paradigm has been popular for quite some time owing its success to the powerful
features it offers for making program development easy and robust. OOPLs, such as C++ and Java,
offer an intuitive way of developing programs and provide powerful features for supporting the program
development. While languages like C can be used to develop programs that follow an object-oriented
design, the support of features such as inheritance, encapsulation, strong type support, exception han-
dling, etc. in the OOPLs make them more suitable for such development.
While the object-oriented programming paradigm provides a more intuitive way of programming, it
is also has complexities. This is due to the various complex features that the paradigm offers. OOPLs
differ widely in the way they implement features that are associated with the object design. For example,
some languages support multiple inheritance while some languages consider it a bad feature. In this sur-
vey we discuss the various features of object-oriented programs and how the languages we considered
1
(Java, C++, C# , Eiffel, Smalltalk, Ruby and Python) differ in implementing these features.
The survey is organized as follows. The Section 3 describes in detail the key concepts of OOPLs. Sec-
tion 4 presents a brief historical view of the OOPLs and gives a ...
An overview of object oriented programming , definitions of class and objects, Encapsulation, data abstraction, inheritance, polymorphism and an easy coding example in C++. This presentation includes visual aids to make the concepts easier to understand.
Brainsmartlabs is one of the excellent online tutorials for beginners which offers the best java and core java courses online. Enroll now to learn core java programming from scratch and become an expert.
Almost everything can be done using refactoring tools:
* How to get buy-in for refactoring? (use Technical Debt quantification tools)
* How to identify refactoring candidates? (use smell detection tools)
* How to prioritize / identify what to refactor first? (use reports from design analysis tools)
* How do I identify dependencies and evaluate impact of refactoring? (use visulization tools)
* How to I actually perform refactoring? (Use IDE support for automated refactoring and use them!)
Deriving from a rich experience in using tools for refactoring in real-world projects, this talk takes you through a whirl-wind tour of refactoring tools (of course for Java). What's more, this talk includes quick demos of some of these tools so you can see them in action.
Presented in BoJUG meetup on 19th Jan in Bangalore - https://www.meetup.com/BangaloreOpenJUG/events/257183518/
Please check out the workshop "AI meets Blockchain" at HIPC 2018, in Bangalore: http://hipc.org/ai-blockchain/
HIPC is a premier conference and hence getting a paper accepted in HIPC workshop would be quite an accomplishment for any blockchain/AI enthusiast. Check out the details in this poster on submissions.
I have been fortunate to have worked with some geeks with incredible coding skills. I felt amazed at how they can play games with compilers, perform magic with their incantations on the shell, and solve some insanely complex algorithm problems with ease. I naively assumed that they are going to achieve greatness in near future. Alas, I was wrong. Really wrong. [Read the rest of the article ... ]
Many students reach out to me asking for project ideas they can do as a summer project for learning. Here is an interesting project idea - implement your own java disassembler (and expand it to a VM later).
Design Patterns - Compiler Case Study - Hands-on ExamplesGanesh Samarthyam
This presentation takes a case-study based approach to design patterns. A purposefully simplified example of expression trees is used to explain how different design patterns can be used in practice. Examples are in C#, but is relevant for anyone who is from object oriented background.
This presentation provides an overview of recently concluded Bangalore Container Conference (07-April-2017). See www.containerconf.in for more details.
Bangalore Container Conference 2017 (BCC '17) is the first conference on container technologies in India happening on 07th April. Organizations are increasingly adopting containers and related technologies in production.Hence, the main focus of this conference is “Containers in Production”. This one-day conference sets the perfect stage for container enthusiasts, developers, users and experts to meet together and learn from each others experiences.
Presented in Bangalore Open Java User Group on 21st Jan 2017
Awareness of design smells - Design comes before code. A care at design level can solve lot of problems.
Indicators of common design problems - helps developers or software engineers understand mistakes made while designing and apply design principles for creating high-quality designs. This presentation provides insights gained from performing refactoring in real-world projects to improve refactoring and reduce the time and costs of managing software projects. The talk also presents insightful anecdotes and case studies drawn from the trenches of real-world projects. By attending this talk, you will know pragmatic techniques for refactoring design smells to manage technical debt and to create and maintain high-quality software in practice. All the examples in this talk are in Java.
Bangalore Container Conference 2017 (BCC '17) is the first conference on container technologies in India. Organizations are increasingly adopting containers and related technologies in production. Hence, the main focus of this conference is “Containers in Production”. This one-day conference sets the perfect stage for container enthusiasts, developers, users and experts to meet together and learn from each others experiences.
This presentation covers quiz questions prepared for the Core Java meetup on 1st October in Accion Labs. It has questions from "Java best practices", "bytecodes", and "elastic search".
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
Oop Article Jan 08
1. Insight
Insight
On the Notion of
Object-Oriented
Programming
This article discusses the fundamentals of object orientation, and in the process dispels
some myths about it.
98 JANUARY 2008 | LINUX FOR YOU | www.linuxforu.com
CMYK
2. Insight
bject-oriented these features and still can be the problems that may need
O progFramming (OOP)
has been the most
popular programming
paradigm for more than
two decades and has been the
subject of active research for quite
considered as a good OO language.
An example of flawed
arguments
I recently heard the following
argument: “Java is better than C++
multiple inheritance can be
rewritten using only single
inheritance (possibly with some
difficulty). Because of such
reasons, a language designer can
make a design decision to support
some time now. because Java is a ‘pure’ object- or not support multiple inheritance
With such widespread use, we oriented language. Java allows no in her language. However, just
would expect the essence or basic global variables, it has a common because an OO language supports
tenets of OOP to be widely known Object base class, and it does not multiple inheritance we cannot
to students and practitioners. support multiple inheritance and so label it as a ‘bad’ language.
However, the essentials are not on. But C++ is a bad object-oriented As Paul Weiss wisely
often understood or followed well in language because it supports commented: “It’s one thing not to
practice. By just programming in an procedural programs, has no see the forest for the trees, but
object-oriented language does not common base class, supports then to go on to deny the reality of
necessarily mean that we do that multiple inheritance, etc.” the forest is a more serious
task well. In this article we will look I like both Java and C++, but matter.”
at the fundamentals of object that aside, let us analyse why this
orientation and try to understand argument is inherently flawed. Characteristics and benefits
why it has become so successful. Just because we believe that Java OOP is based on the solid
We’ll also dispel some myths and is a ‘pure’ OO language, it need not foundation provided by the
face some hard facts about OOP be better than C++. Why is ‘pure’ concepts of inheritance,
technology. object-orientation better than any polymorphism, abstraction and
other approach (like the multi- encapsulation.
The basics paradigm approach in C++)? What An abstract data type provides
What is object-oriented are the criteria for concluding us with the ability to think of a
programming? Hanspeter whether a language is ‘pure’ or type in its abstract interface level
Mossenbock’s Object-Oriented ‘impure’? Doesn’t Java’s support and use it depending on its
Programming in Oberon-2 of C-style conditional and looping interface only (without concerning
[Springer-Verlag, 1993] provides the constructs, and primitive types ourselves with the implementation
following definition: “Object- make it ‘impure’? Just because a details; otherwise, there is nothing
oriented programming means language also supports other ‘abstract’ about an ADT). Since
programming with abstract data paradigms doesn’t mean that it is a OOP is based on the solid
types (classes) using inheritance bad OO language. foundation provided by
and dynamic binding.” This makes it Providing a common base class is abstraction, it is possible to create
clear that OOP is about using ADTs a design decision that a language complex software that hides a lot
with inheritance and virtual designer makes in an OO language. of implementation details. Because
functions. Based on information and category of this, object orientation is
Many of the attributes we theories, many researchers have suitable for programming on a
often associate with OOP aren’t supported the argument that having large scale.
inherently associated with this a common class as a base class for all Inheritance is the mechanism
definition. Strictly speaking, the classes is unnatural and a non- in which common properties of
having a common base class (say, intuitive design. various classes (or objects, in case
the object class), or language Inheritance is one of the of object inheritance) are
features like namespaces, fundamental features of OOP. A abstracted and provided in
exception handling, RTTI (RunTime language without any form of common base classes, thereby
Type Identification), reflection, inheritance support cannot claim to creating relationships between
operator overloading, function be an OOP language. Multiple related types. Inheritance is
overloading, etc, are nothing to do inheritance is just one kind of important for design since it helps
with OOP, as such. However, many inheritance and it is common to see to organise classes in terms of the
modern OOP languages (like Java) it in use (for example, a two-in-one natural relationship between the
have a lot of these features, which set inherits the properties of both a types. In inheritance many of the
doesn’t mean they are tape-recorder and a radio). details of the derived classes will
characteristics of object orientation Practically, it is difficult to use only be known later in the design
itself. A language can have none of multiple inheritance correctly, and stage. Also, because of the
www.linuxforu.com | LINUX FOR YOU | JANUARY 2008 99
CMYK
3. Insight
classification of related types, we background, it takes more time With OOP we can write
can write code for general types to learn the object-oriented generic, reusable components
(instead of code that works or approach than to learn the and sell it independently.
assumes specific types). This gives language features.
rise to runtime polymorphism where Object-oriented programs are Partially true! One of the
late binding of actual methods for typically more difficult to understand fundamental benefits with OOP is
the code is resolved. With than their procedural equivalent. the ability to write reusable code,
inheritance (and runtime For example, to understand how but OOP hasn’t delivered fully in the
polymorphism), it is easier to to use a derived class, we need to go writing and distributing of generic
introduce new changes and extend through the public members of that reusable code, in practice. Writing
the software with new types without class and also the public members COTS (Components Off The Shelf)
affecting the rest of the code, so of all of its base classes. The effort software is still not fully possible
OOP programming required to understand and make with OOP. The emerging areas of
enables writing extensible software. use of class libraries, frameworks component software and generic
Object orientation also enables or inheritance hierarchies is programming paradigms address
providing abstract or concrete considerable. this shortcoming of OOP.
classes as libraries and related Object orientation provides a
classes as frameworks; instead of higher level of abstraction from OOP emerged based on solid
(re)writing classes every time, low-level details and it provides theoretical foundations.
we can reuse the classes. So features to model higher-level
object orientation helps writing relationships between classes. This False! Unlike programming
reusable software. flexibility also comes with some paradigms like functional
So the ability to handle complex loss of efficiency compared to programming, which is based on
code (enhanced maintainability), straightforward procedural lambda calculus and emerged from
the ability to extend the code constructs. For example, to extensive academic research,
based on specific requirements support runtime polymorphism, an object orientation came into
later (extensibility) and the ability extra level of indirection is needed practical use first and was later
to use or reuse the code to invoke a virtual method. In other subjected to extensive research.
(reusability) are the main benefits words, a virtual method call is Theoretical understanding of
promised by OOP. almost always slower than a direct many of the areas on OOP is still
method call. Such additional hazy and OOP continues to be a
Costs and drawbacks overhead for abstracting low-level subject of active research.
OOP is not a panacea for the details is known as an abstraction
problems faced by the software penalty in OOP. It takes time to master
industry today. With more than object-oriented programming
three decades of experience in Some myths and realities and design.
using object-oriented programs, the We will encounter many myths
hype and over-enthusiasm in associated with OOP. Let us check True! It is easy to understand
promoting object orientation has the validity of some of them here. the basic tenets, features and ideas
subsided and the costs of object- of OOP. However, it takes
oriented programming are clear. Software written in OOP is considerable time to master the
Object orientation requires a better than non-OOP software. analysis, design and implementation
new way of thinking (different from techniques to create quality
procedural thinking), and it is False! While it is true that OOP solutions using object-oriented
difficult to comprehend object- provides significant help in creating technology. As they say, nothing
oriented programs. Since object quality software, the quality of the good ever comes easy!
orientation provides a higher level software we create is in our hands, and
of abstraction from machine-level good or bad software has nothing to do
By: S.G. Ganesh is a research
details, there is some loss of with OOP. We can write high-quality
engineer in Siemens (Corporate
efficiency (compared to procedural code in other programming paradigms
Technology). His latest book is “60
programs). (like functional programming);
Tips for Object Oriented
The benefits of OOP aren’t similarly, we can also write sloppy
Programming”, published by Tata-
automatically available to programs code following OO approach. So, it is
McGraw Hill in December this year.
written in the procedural way— incorrect to make claims like: “My
You can reach him at
by just using OOP constructs. software is better than your’s because
sgganesh@gmail.com
For programmers with a procedural mine is OO whereas yours isn’t!”
100 JANUARY 2008 | LINUX FOR YOU | www.linuxforu.com
CMYK