<<

International Journal of Applied Engineering Research ISSN 0973-4562 Volume 14, Number 8 (2019) pp. 1835-1841 © Research India Publications. http://www.ripublication.com Technological Advancement in Object Oriented for Development

Achi Ifeanyi Isaiah1, Agwu Chukwuemeka Odi2, Alo Uzoma Rita3, Anikwe Chioma Verginia4, Okemiri Henry Anaya5 1Department of Maths/Comp Sci/Stats/Info., Faculty of science, Alex Ekwueme University, Ndufu-Alike

2Department of , Ebonyi University-Abakaliki. 3Alex Ekwueme University, Ndufu-Alike, 4Department of Maths/Comp Sci/Stats/Info., Faculty of science, Alex Ekwueme University, Ndufu-Alike

5Department of Maths/Comp Sci/Stats/Info., Faculty of science, Alex Ekwueme University, Ndufu-Alike

Abstract and personalization problems. Take for instance, a lot of sophisticated apps are being produced and release in the Object oriented programming paradigm in software market today through the application of OOP. Almost desktop development is one of the most popular methods in the apps are being converted to mobile apps through Java, ++, information technology industry and academia as well as in PHP & MySQL, , Python etc platform which form the many other forms of engineering design. Software testimony of OOP in the software industries. is a field of engineering that came into existence developer has been revolving using procedural language for owing to the various problems that developers of software the past decade before the advent of OOP. The relationships faced while developing software projects. This paper analyzes between them is that procedural languages focus on the some of the most important technological innovations in but OOP focuses on the itself, object oriented in recent times. The therefore, making the software programming more visible and advancements in Object technologies that have been analyzed increasing the efficiency and usability of the existing object here include object , introspection and reflection, class thereby reducing cost. The significant aspect of object co-evolution, global software development contexts, oriented objects is character, attributes and their modeling of interfaces, namespaces, query-able source codes, meta-model the software system, since, internal structure is time- for generating design alternatives, magic methods, design consuming and often imposes requirement barriers for pattern detection, auto-active functional verification, development. Objects is like blood capsule in OOP, it map cohesion, coupling and (SoC). From character with behaviour, thus enable software programmers our analysis we predict further advancements in object to map a real problem implementation and execution in the technologies towards game development, metrics for software problem domain. The concepts of OOP [1]–[7]such as design analysis, addition to fundamental Object oriented inheritance, encapsulation and polymorphism enable the features and distributed software successful implementation of objects access and modification. development. Therefore, the phenomenon by which programming method Keywords: Application, Object, Oriented, Paradigm, code is designed based on the functions and attributes of the Software, Development, Concepts objects is classified as object oriented programming [9]. Object oriented programming bridges the creation of intellectuals object that model a business problem we trying to 1.1 Introduction solve [10]. In the same vein, the process by which of Object oriented programming (OOP) is like an element of programming approach that provides a way of modularizing nature in the programming world where the programs by creating partitioned memory area for both multidiscipline domain of life and professional fields of and functions that can be used as templates for creating copies engineers, educationist, scientist, , of that modules on demand by the user is referred to as object programmers, system analyst and field researchers has been programming language [2]. This programming style revolves involved. In recent time, OOP and Software development round the generation of programming language, from 1st – 5th industries are gaining advantages where the two phenomena generations. Figure 1 summarizes the generation of computer are emerging and converging to produce efficiency in programming language [11], [12]: industries software that helps to solve specific organizational

1835 International Journal of Applied Engineering Research ISSN 0973-4562 Volume 14, Number 8 (2019) pp. 1835-1841 © Research India Publications. http://www.ripublication.com

1st Generation (Machine Language) .g ALGOL 58, 1 5th Generation (Enhanced Language) E.g . Mercury, OPS5 2nd Generation (Assembly Generations of ). E.g ALGOL 60, st th programming language (1 – 5 ) FORTRAN II, COBOL

th 4 Generation 3rd Generation (Statement Language) E.g (High Level Language) E.g PHP, SQL, , Python, Ruby C, C++, Java, JavaScript

Figure 1: Generation of

Computer Languages 1st – 5th generations maintenance (v) completion time of software development necessitated. a. First Generation Languages (1GL): This is the machine languages era which is consist of 0s and 1s The knowledge of object-oriented programming paradigm in corresponding to the instruction set that is hard wired software development is numerous. OOP structuring provides into the security of a microprocessor. Examples: a closer representation of reality than other programming ALGOL 58, FORTRAN 1 techniques thereby solving complex software systems. A proper analyzed OOP system can implement changes at the b. Second Generation Languages (2GL): This is the era class level without affecting the other level in the system of assembly languages or low level language development, thereby reducing maintenance cost. This is form corresponding 1 to 1 basis to a machine language a formidable computing power and advantageous of OOP in instruction. Examples: ALGOL 60, FORTRAN II, the industries software development problem solving. The COBOL concepts of OOP, the polymorphism and inheritance, allows c. Third Generation Languages (3GL): This is the High the reuse individual components, hence, reduces the level languages dated as earlier as 1950'. The development time of OO software. OOP also helps in improvements of 1st and 2nd generation resulted to 3rd reducing rate of work involved in revising and maintaining the generation which is highly used in business and system because during the design state, problems are easily scientific applications. Examples: C, C++, Java, debugged [1]. JavaScript,

. Fourth Generation Languages (4GL): This is high 2.1 The Generic of Software development Project level in nature. It consists of statements similar to statements in a human language. It eliminates many Software Development Project is not an easy process which is of the strict syntax and semantics grammar rules made up of many phases. Each phase requires a lot of sketch which imposed barriers in 3rd generation languages. and report in all the development initiative processes. The They are also high level languages. Examples: PHP, expert and the novice do not think alike in software industry SQL, Perl, Python, Ruby [13] with respect to code generation during implementation. Each software development project has to go through about eight e. Fifth Generation Languages (5GL): This contains phases[15] as follows: visual tools to help develop a program. This is aspect solely dedicated in solving problems. It does not (i) Requirement gathering (ii) Writing functional follow algorithm written by a programmer but follow specifications (iii) Creating architecture and design the constraints given to the program. Examples: documents (iv) Implementation and coding (v) Prolog. Mercury, OPS5. Testing and quality assurance (vi) Software release (vii) Documentation (viii) Support and new features. The essence of the new paradigm is to solve software Figure 1 depicts a typical development process for a complexity (such as lines of code, number of classes, number new product. Multiple cycles might run during the of modules, module interconnections and dependencies, and testing phase as software testers/developers find time to understand[14] through the needs to alter the style of problems, bugs and fix them before a software programming. The essence is to: (i) produce software product is fully deployed in the market. Figure 1 efficiency and reliability (ii) develop reusable software clearly shows the various phases and the interaction modules (iii) production cost reduction (iv) reduce cost of

1836 International Journal of Applied Engineering Research ISSN 0973-4562 Volume 14, Number 8 (2019) pp. 1835-1841 © Research India Publications. http://www.ripublication.com

with the customer. The software release runs through 2.2 Super Model of Software development the customer to support and down to new Software development should always follow a particular features, etc. Each phase is slightly dependent on software development life cycle model like the water fall other phases for the software development project to model and so on in the development of an application from its be achieve efficiently. initial feasibility study down to its deployment and maintenance in the field. There are many other models that could be used to explain various approaches during SDLC process. The SDLC model is widely used during software development because it makes it easier to describe the steps that are followed within the life-cycle framework. The SDLC targeted in producing high-quality software that meets or exceeds customer expectations, reaches completion within time, and cost estimation, and is directly related to the customer as well as organizational satisfaction. Three major phases are identified in super model of software development. From figure 2; the first phase is design and communication, after analysis requirements are collected and design. The second phase starts with coding. The programmer transforms the design into a programming notation. The developed code is tested to ensure it meets the usability and software requirement specification. Once, the deployment test result meets the customer’s expectation then it moves to the final phase. The final phase is the third phase which propels the software to be released in the market based on the nature of the stakeholder involved by the project manager. All processing phases supported by time-boxing and smart project management[16]. The super model diagram is depicted in figure 2 below:

Figure 1: Software Development Projects

Customer’s participation Development st nd Product Release (1 phase) (2 phase) rd Prototyping (3 phase) Communication Coding and unit testing unit and analysis Risk Time Time Boxing Boxing Time Analysis Testing Boxing Product Delivery

Deployment Usability Design (Modeling) Testing Maintenance

Deployment Test

Figure 2: Software Development Super Model

1837 International Journal of Applied Engineering Research ISSN 0973-4562 Volume 14, Number 8 (2019) pp. 1835-1841 © Research India Publications. http://www.ripublication.com

2.3 Features of Object-Oriented Programming system is built. The form created that accepts input from the user to the data base is a typical example of an The fundamental features or concepts of object-oriented interface. The point of interactivity is visible to the user programming [17][9], [18], [19]: but not the implementation process and its is not (i) Data Abstraction (ii) Encapsulation (iii) Inheritance (iv) affected by the change in the implementation by a Polymorphism (v) Extensibility (vi) Persistence (vii) different type of steering mechanism such as power Delegation (viii) Genericity (ix) Object Concurrency (x) steering. The user’s interface is an integral part of the Event Handling (xi) system but not the implementation process and this implementation process will not change the human interface. Therefore, the process, or mechanism, by which (i) Data abstraction: is the concept of OOP that focuses you combine code and the data it manipulates into a on the vital attribute and behaviour of an object single unit, is commonly referred to as encapsulation. Abstraction focuses only on complex ideas and ignores With Encapsulation in place, there is always a measure of irrelevant details that would confuse us when handling security and data protection from the user of the system. real world problems. It shows only the relevant data and hides unnecessary details of an object from the operator. From the figure 3, the features of the car are the (iii) Inheritance: Inheritance allows the extension and abstraction. In this context, an attribute could be any reuse of existing code, without having to repeat or rewrite character of an object that affects the state or data as well the code from scratch. Inheritance involves the transfer of as the operation reflecting a method (or behavior or the parents attribute to the children. Creating new classes, function). For example, the features a car, such as the also called derived classes, from existing classes (base load the car is carrying ,the medical history of the classes).This creation of new classes from the old classes manager traveling in the car, and the working mechanism enables the existence of a hierarchy of classes that of the car engine are the vital feature of the car. transfer attribute to other smaller classes called the sub- class in the concept of the real world. Inheritance is often times applicable when there is need to transfer attribute from one class to another. Extension uses inheritance to transfer attribute from one class, the existing classes to new ones by adding new features. Specialization is another term used to refine the behavior of a general class through inheritance.

(iv) Polymorphism: This allows an object to be Figure 3: Features of a car in terms of driver view point processed differently by data types and/or data classes. In other words, it allows different objects to respond in different way when faced with same challenge. Again, In real world problem solving, the abstraction specifies this allows a single name or operator given to an object in necessary and sufficient descriptions rather than a class to be associated with different operations in that implementation details. It results in separation of class or other classes. This action depends on the type of interface and implementation. data passed, and gives the ability to redefine a method within a derived class. (ii) Encapsulation: From the user’s point of view, a number of features are packaged in a capsule to form an (v) Concurrency: This is represented in OOP such as entity. The entity provides several services on the surface Java through threading, synchronization, and scheduling. by linking up and hiding the implementation details. The Using concurrency allows additional complexity to the term encapsulation is used to describe the keeping off of development of applications, allowing more flexibility in the details used in implementation. software applications. Information hiding is about keeping away the implementation process of a system from the user. Data hiding is the private usage of data by few individuals. The (vi) Genericity: This is a technique for defining software essence of this encapsulation is further explained with the components that have more than one interpretation user knowing how to use the system without knowing depending on the data type of parameters. Thus, it helps how it was implemented. This implies that the hiding of to solve complex problem by keeping off unnecessary the driving mechanism of any system from the user of the details from the user of data items without specifying system refers to information hiding. Whatever interface their exact type. These unknown (generic) data types are created for human interactivity of a system is applicable resolved at the time of their usage (e.g., through a to every other system that the user does not know how the

1838 International Journal of Applied Engineering Research ISSN 0973-4562 Volume 14, Number 8 (2019) pp. 1835-1841 © Research India Publications. http://www.ripublication.com

function call), and are based on the data type of object (the cloned object). The method within an parameters. Object class is used to clone an object. In software development, object cloning technique saves the

extra processing task for creating the exact copy of (vii) Persistence: This is the concept by which an object an object. (a set of data) outlives the life of the program, existing

between executions. c. Class Co-evolution

It can be described as an implicit inter-dependence (viii) Events handling: An event can be considered a among classes which, when understood, can be kind of interrupt: they interrupt your program and allow valuable in guiding subsequent evolution of the your program to respond appropriately. In a conventional, system in question. This co-evolution relation can be non object-oriented language, processing proceeds used as the basis for advice on maintenance activities literally through the code: code is executed in a ‘top- during software development [22]. [23] With co- down’ manner. The flow of code in a conventional evolution, patterns are formed, in addition to the language can only be interrupted by loops, functions, or members of the co-evolving clusters, report the iterative conditional statements. In an object-oriented nature of the interdependency between the co- language such as Java, events interrupt the normal flow of evolving classes. program execution. Objects are connected to one another

and can pass information and control in chains from themselves to another object, and so on. d. Query-able Source Code It is advancement in object oriented software (ix) Delegation: This is an alternative to class development processes where source code encode a inheritance. Delegation is about the connection amongst query able and modifiable model of the applications objects which allows object to function like the and utilizable by IDEs in these aspects [24]. inheritance. In delegation, two objects are involved in handling a request: methods can be delegated by one object to another, but the receiver stays bound to the e. Interfaces object doing the delegating, rather than the object being delegated to. This is comparable to the relationship of a This is the input point between the user and the child and parent where the child classes could send system which serves as a class blueprint. It also requests to parent classes. works with the object as defined(data types) which determines exactly what can be done with the class,

without getting know the details of the 3.1 Technological Advancement in Object Oriented implementation-specific details. This allows software Programming Paradigm for Problem Solving developers to group classes that share some functionality but do not necessarily share a Discussed briefly are some technological advancement in parent class. object oriented programming paradigm for problem solving during software development., a. Design Pattern Detection . Meta-model for generating design alternatives Design patterns play a key role in software A meta-model specifies the structure, the semantics, development process as it was created to document and the constraints for a family of models in a certain reusable architectural proposals for producing high- domain [25]. At times in most software development quality designs, help document. [20] Therefore, activity, there are extensively used for prediction, design pattern detection is described as advancement sensitivity analysis, pattern recognition, and design in OOP paradigm introduced to improve software optimization [26]. Therefore, in and accelerate software development. It is an development, meta-model serves as an alternative to important concept used in the field of reverse most common code-based development techniques.` engineering used in identifying design patterns used

in the implementation of a software system. By detecting design patterns from reusable software, it is g. Namespaces easier to recognize and verify those reusable parts in Namespaces help you to more effectively manage software based system or figure out in the form of your code base by compartmentalizing various pre-developed components, or build them as reusable libraries and classes according to context [27]. product [21].

b. Object Cloning h. Introspection and Reflection The object cloning is a way to create exact copy of Introspection refers to making a program to look into an object by transferring all its attribute to that same the object's attribute, like its name, parent class (if

1839 International Journal of Applied Engineering Research ISSN 0973-4562 Volume 14, Number 8 (2019) pp. 1835-1841 © Research India Publications. http://www.ripublication.com

any), properties, and methods. Reflection is about paradigm for problem solving during software development. making a to x-ray the structure of The knowledge of OOP paradigm when utilize will increase a program as well as the modification of its behavior problem solving abilities of OOP by matching the problem (specifically the values, meta-data, properties and with real world object then translated to code. functions) of a program at runtime.

References i. Magic Method [1] Saha B. and Muhherjee D., (2017), “Analysis of Magic Methods are vital concepts in Object Oriented Applications of Object Orientation to Software programming, allowing you to respond to specified Engineering, Data Warehousing and Teaching circumstances when using a specific object. It allows Methodologies”, International Journal of Computer you to tweak calls to methods or properties of a class Sciences and Engineering, Vol. 5, Issue 9, pp 244-248. and update the object state when particular operation [2] Nwaocha V., (2009), Object-Oriented Programming occur. Using C # Course Guide CIT 834, National Open University, pp 88-110 j. Cohesion, Coupling and Separation of Concerns [3] Onu F. U., (2016) “Comparative Study of Structured and OOP Paradigms”, International Journal of Cohesion is the sticking together of responsibilities Advanced Research in Computer Science and Software within a module or in other words its complexity. Engineering vol. 6, No 8, pp 30-39. Coupling captures the complexity between connecting different classes. While, Separation of [4] Kiczales G., John L., Anurag M., Maeda C., Cristina Concerns (SoC) is the idea that a software system V., Jean-Marc L., and Irwin J., (1997), Aspect Oriented must be split into parts that do not overlap in Programming, proceedings of the European Conference functionality. on Object-Oriented Programming (ECOOP),Finland. Springer-Verlag LNCS 1241.

. Auto-Active Functional Verification [5] Skelly J. F., (1997), Application Of Object Oriented Programming Techniques In Front End Computers, Auto-active Functional verifiers are OOP concepts Paper submitted to: QCALEPCS ' 97 Beijing , China, that provide an intermediate level of pp 3-5 computerization(automation) between fully automatic systems and the interactive users supply [6] Schuster F., Tendyck ., Liebchen C., and Davi L., code with annotations as input while benefiting from (2015), Counterfeit Object-oriented Programming: On a high level of automation in the back-end [28]. the Difficulty of Preventing Code Reuse Attacks in C++ Applications, 2015 IEEE Symposium on Security

and Privacy, pp 745-762 These technological advancement in OOP helps to translate [7] Corral R., Morgado-Estevez A., Jimenez G., and Civit our thoughts to a program. It makes possible for a problem to A., (2014), A game-based approach to the teaching of solved exactly the same way human being could solve it in the Object-oriented programming languages, Computer a real world. It is possible to construct large reusable and Education, Vol 73., pp 83-92 components using these object-oriented technologies. [8] Storey M., Zagalsky A., Filho F., Singer L., and

German D., (2017), How Social and Communication 4.1 Conclusion Channels Shape and Challenge a Participatory Culture in Software Development, IEEE Trans. Software Therefore, the increasing demand of software in the market Engineering, vol 43, No. 2, pp 185-204 enterprise today due to numerous problem facing the human being and organization is continuously creating gaps for [9] Kurt B., (1999) Lecture Note on Object Oriented development of new technologies in OOP. Based on customer Programming, Istanbul Technical University, Computer and user request, software developers are rapidly finding Engineering Department, Version 0.1.2 solution to solving problems. In effort to solve these [10] Kendal S., (2209), Object Oriented Programming using regenerating issues, new advanced technologies in the field of Java, Bookboon eBook Company, ISBN 978-87-7681- OOP are continuously being created and additional 501-1, 16P. technologies are emerging. Software developers are faced with code usability, refractory, maintainability, enhancement [11] Adam P., (2007), Post object-oriented paradigms in of software features, developing from the scratch and many software development: a comparative analysis, more research are emerging in order to find considerable Proceedings of the International Multiconference on approach to this clarion call in the software engineering Computer Science and Information Technology, pp. domain. Hence, this necessitated this paper focused on 1009 – 1020 technological advancement in object oriented programming

1840 International Journal of Applied Engineering Research ISSN 0973-4562 Volume 14, Number 8 (2019) pp. 1835-1841 © Research India Publications. http://www.ripublication.com

[12] Kahanwal B., (2013), Abstraction Level Taxonomy of Interna-tional Workshop on Structural Health Programming Language Frameworks, International Monitoring (IWSHM). Stanford, CA, USA, 09/12/2017 Journal of Programming Languages and Applications [26] Schulz1, W., Hermannsa, T., Khawlia, T.A., (2017), (IJPLA) Vol.3, No.4 Meta-modelling, and emulation of multi- dimensional data for virtual production intelligence. [13] Kaur K., and Singh H., (2007), The Impact on Software AIP Conference Proceedings 1863, 440003. Maintenance of Fourth-Generation Languages and [27] Gilmore W. J. (2008), Advanced OOP Features. In: Object-Oriented Paradigms, Apeejay Journal of Beginning PHP and MySQL, Apress, pp 193-194. Management and Technology, vol. 2, No. 1 [28] Julian T, Carlo A. F, Martin N, and Nadia P, (2015), [14] Yan W. T., (2016), Software Development Lifecycle AutoProof: Auto-active Functional Verification of Model, The Hong Kong University of Science and Object-oriented Programs, Proceedings of the 21st Technology International Conference on Tools and for [15] Behera H., K.K.Sahu K., and Bhattacharjee G., (2017), the Construction and Analysis of Systems (TACAS). Lecture Note on Software Engineering, DEPT OF CSE Lecture Notes in Computer Science, 9035:566--580, & ITVSSUT, Burla, pp 15-18 Springer. [16] Akbar M. A, Sang J., Arif K., Amin F., Hussain S., Hu H., Muhammad S., Xiang H., and Manzoor E., (2018),

Improving the Quality of Software Development Process by Introducing a New methodology – AZ Model, IEEE Access, vol. 6, 1-1 [17] Ruparelia N., (2014), Software Development Lifecycle Models, ACM SIGSOFT Software Engineering Notes, vol 35, Issue 3, pp 8-13 [18] Ralph P., (2018), The Two Paradigms of Software Development Research, Sci. Computing Program, vol. 156, pp 68-89 [19] Brauer J., Plosch R., Saft M., and Korner, Measuring Object Oriented Design Principles: The Results of Focus Group Based Research, Journal of System and Software, vol. 140, pp 74-90 [20] Fatimah M A, and Rizwan J Q, (2014), Impact of Design Patterns on Software Maintainability, Intelligent Systems and Applications, 10, 41-46. [21] Amit K. G, and Saurabh D, (2012), Automatic Detection of Patterns from Reverse Engineering, Special Issue of International Journal of Computer Applications (0975 – 8887) on Issues and Challenges in Networking, Intelligence and Computing Technologies – ICNICT 2012, 17-22. [22] Zhenchang X, and Eleni S, (2004), Data-mining in Support of Detecting Class Co-evolution, Proceedings of the 12th IEEE International Workshop on Program Comprehension (IWPC’04). [23] Zhenchang X, and Eleni S, (2007), Understanding the Evolution and Co-evolution of Classes in Objected- Oriented Systems, International Journal of Software Engineering and Knowledge Engineering, World Scientific Publishing Company. [24] Biswajit S, and Debaprasad M, (2017), Analysis of Applications of Object Orientation to Software Engineering, Data Warehousing and Teaching Methodologies, International Journal of Computer Sciences and Engineering, Vol. 5(9), 244-248. [25] Legatiuk, D., Theiler, M., Dragos, K. & Smarsly, K., (2017), A categorical approach towards cyber-physical systems. In: Proceedings of the 11th

1841