Open–closed Principle
   HOME



picture info

Open–closed Principle
In object-oriented programming, the open–closed principle (OCP) states "''software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification''"; that is, such an entity can allow its behaviour to be extended without modifying its source code. The name ''open–closed principle'' has been used in two ways. Both ways use generalizations (for instance, inheritance or delegate functions) to resolve the apparent dilemma, but the goals, techniques, and results are different. The open–closed principle is one of the five SOLID principles of object-oriented design. Meyer's open–closed principle Bertrand Meyer is generally credited for having originated the term ''open–closed principle'', Robert C. Martinbr>"The Open-Closed Principle", C++ Report, January 1996 which appeared in his 1988 book ''Object-Oriented Software Construction''. * A module will be said to be open if it is still available for extension. For example, it should b ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




Bertrand Meyer Recent
Bertrand may refer to: Places * Bertrand, Missouri, US * Bertrand, Nebraska, US * Bertrand, New Brunswick, Canada * Bertrand Township, Michigan, US * Bertrand, Michigan * Bertrand, Virginia, US * Bertrand Creek, state of Washington * Saint-Bertrand-de-Comminges, France * Bertrand (1981–94 electoral district), in Quebec * Bertrand (electoral district), a provincial electoral district in Quebec Other * Bertrand (name) * Bertrand (steamboat), ''Bertrand'' (steamboat), an 1865 steamboat that sank in the Missouri River * Bertrand Baudelaire, a fictional character in ''A Series of Unfortunate Events'' * Bertrand competition, an economic model where firms compete on price * Bertrand's theorem, a theorem in classical mechanics * Bertrand's postulate, a theorem about the distribution of prime numbers * Bertrand, Count of Toulouse (died 1112) * Bertrand (film), ''Bertrand'' (film), a 1964 Australian television film See also

* Bertrand Gille (other) * Bertram (disambigua ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Abstract Base Class
In object-oriented programming, a class defines the shared aspects of objects created from the class. The capabilities of a class differ between programming languages, but generally the shared aspects consist of state ( variables) and behavior ( methods) that are each either associated with a particular object or with all objects of that class. Object state can differ between each instance of the class whereas the class state is shared by all of them. The object methods include access to the object state (via an implicit or explicit parameter that references the object) whereas class methods do not. If the language supports inheritance, a class can be defined based on another class with all of its state and behavior plus additional state and behavior that further specializes the class. The specialized class is a ''sub-class'', and the class it is based on is its ''superclass''. Attributes Object lifecycle As an instance of a class, an object is constructed from a class via '' ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Type Theory
In mathematics and theoretical computer science, a type theory is the formal presentation of a specific type system. Type theory is the academic study of type systems. Some type theories serve as alternatives to set theory as a foundation of mathematics. Two influential type theories that have been proposed as foundations are: * Typed λ-calculus of Alonzo Church * Intuitionistic type theory of Per Martin-Löf Most computerized proof-writing systems use a type theory for their foundation. A common one is Thierry Coquand's Calculus of Inductive Constructions. History Type theory was created to avoid paradoxes in naive set theory and formal logic, such as Russell's paradox which demonstrates that, without proper axioms, it is possible to define the set of all sets that are not members of themselves; this set both contains itself and does not contain itself. Between 1902 and 1908, Bertrand Russell proposed various solutions to this problem. By 1908, Russell arrive ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Object-oriented Programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and implemented in code). In OOP, computer programs are designed by making them out of objects that interact with one another. Many of the most widely used programming languages (such as C++, Java, and Python) support object-oriented programming to a greater or lesser degree, typically as part of multiple paradigms in combination with others such as imperative programming and declarative programming. Significant object-oriented languages include Ada, ActionScript, C++, Common Lisp, C#, Dart, Eiffel, Fortran 2003, Haxe, Java, JavaScript, Kotlin, Logo, MATLAB, Objective-C, Object Pascal, Perl, PHP, Python, R, Raku, Ruby, Scala, SIMSCRIPT, Simula, Smalltalk, Swift, Vala and Visual Basic.NET. History The idea of ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Robustness Principle
In computing, the robustness principle is a design guideline for software that states: "be conservative in what you do, be liberal in what you accept from others". It is often reworded as: "be conservative in what you send, be liberal in what you accept". The principle is also known as Postel's law, after Jon Postel, who used the wording in an early specification of TCP. In other words, programs that send messages to other machines (or to other programs on the same machine) should conform completely to the specifications, but programs that receive messages should accept non-conformant input as long as the meaning is clear. Among programmers, to produce compatible functions, the principle is also known in the form: be contravariant in the input type and covariant in the output type. Interpretation The principle was first written down by Jon Postel in the 1979 IPv4 specification. RFC 1122 (1989) expanded on Postel's principle by recommending that programmers "assume that the ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




IEEE Software
''IEEE Software'' is a bimonthly peer-reviewed magazine and scientific journal published by the IEEE Computer Society covering all aspects of software engineering, processes, and practices. Its mission is to be the best source of reliable, useful, peer-reviewed information for leading software practitioners—the developers and managers who want to keep up with rapid technology change. It was established in 1983 and is published by the IEEE Computer Society. According to the ''Journal Citation Reports'', the journal has a 2022 impact factor of 3.3. ''IEEE Software'' received the APEX 2016 Award of Excellence in the "Magazines, Journals & Tabloids — Electronic" category. ''IEEE Software'' November/December 2016 issue, "The Role of the Software Architect," won the 2017 Folio Eddies Digital Award in the "Standalone Digital Magazine; Association/Non-Profit (B-to-B) – Standalone Digital Magazine – less than 6 issues" category. ''IEEE Software'' also received an honorable mention ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Information Hiding
In computer science, information hiding is the principle of segregation of the ''design decisions'' in a computer program that are most likely to change, thus protecting other parts of the program from extensive modification if the design decision is changed. The protection involves providing a stable interface which protects the remainder of the program from the implementation (whose details are likely to change). Written in another way, information hiding is the ability to prevent certain aspects of a class or software component from being accessible to its clients, using either programming language features (like private variables) or an explicit exporting policy. Overview The term ''encapsulation'' is often used interchangeably with information hiding. Not all agree on the distinctions between the two, though; one may think of information hiding as being the principle and encapsulation being the technique. A software module hides information by encapsulating the informatio ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


David Parnas
David Lorge Parnas (born February 10, 1941) is a Canadian early pioneer of software engineering, who developed the concept of information hiding in modular programming, which is an important element of object-oriented programming today. He is also noted for his advocacy of precise documentation. Life Parnas earned his PhD at Carnegie Mellon University in electrical engineering. Parnas also earned a professional engineering license in Canada and was one of the first to apply traditional engineering principles to software design. He worked there as a professor for many years. He also taught at the University of North Carolina at Chapel Hill (U.S.), at the Department of Computer Science of the Technische Universität Darmstadt (Germany), the University of Victoria (British Columbia, Canada), Queen's University in Kingston, Ontario, McMaster University in Hamilton, Ontario, and University of Limerick (Ireland). David Parnas received a number of awards and honors: * ACM "Best ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Alistair Cockburn
Alistair Cockburn ( ) is an American computer scientist, known as one of the initiators of the agile movement in software development. He cosigned (with 16 others) the Manifesto for Agile Software Development. Life and career Cockburn started studying the methods of object oriented (OO) software development for IBM. From 1994, he formed "Humans and Technology" in Salt Lake City. He obtained his degree in computer science at the Case Western Reserve University. In 2003, he received his PhD degree from the University of Oslo. His thesis was entitled "People and Methodologies in Software Development" Cockburn helped write the Manifesto for Agile Software Development in 2001, the agile PM Declaration of Interdependence in 2005, and co-founded the International Consortium for Agile in 2009 (with Ahmed Sidky and Ash Rofail). He is a principal expositor of the use case In both software and systems engineering, a use case is a structured description of a system’s behavior as ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




Craig Larman
Craig Larman (born 1958) is a Canadian computer scientist, author, and organizational development consultant. With Bas Vodde, he is best known for formulating LeSS (Large-Scale Scrum), and for several books on product and software development. Education and career Larman received a B.Sc. and a M.Sc. in computer science from Simon Fraser University in Vancouver, British Columbia, focusing on artificial intelligence and object-oriented programming languages. Starting in the late 1970s, Larman worked as a software developer in APL, Lisp, Prolog, and Smalltalk, using iterative and evolutionary methods, which strongly influenced his interest in methods and technologies in software development, that later became a focus of his consulting and writing. In the 1990s, he was a volunteer organizer at the OOPSLA conferences, which exposed him to early introductions to the Agile software development methods Scrum and Extreme Programming presented at the conference, which led to his interest ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Polymorphism (computer Science)
In programming language theory and type theory, polymorphism is the use of one symbol to represent multiple different types.: "Polymorphic types are types whose operations are applicable to values of more than one type." In object-oriented programming, polymorphism is the provision of one Interface (object-oriented programming), interface to entities of different data types. The concept is borrowed from a principle in biology where an organism or species can have many different forms or stages. The most commonly recognized major forms of polymorphism are: * ''Ad hoc polymorphism'': defines a common interface for an arbitrary set of individually specified types. * ''Parametric polymorphism'': not specifying concrete types and instead use abstract symbols that can substitute for any type. * ''Subtyping'' (also called ''subtype polymorphism'' or ''inclusion polymorphism''): when a name denotes instances of many different classes related by some common superclass. History Interest ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Object-oriented Programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and implemented in code). In OOP, computer programs are designed by making them out of objects that interact with one another. Many of the most widely used programming languages (such as C++, Java, and Python) support object-oriented programming to a greater or lesser degree, typically as part of multiple paradigms in combination with others such as imperative programming and declarative programming. Significant object-oriented languages include Ada, ActionScript, C++, Common Lisp, C#, Dart, Eiffel, Fortran 2003, Haxe, Java, JavaScript, Kotlin, Logo, MATLAB, Objective-C, Object Pascal, Perl, PHP, Python, R, Raku, Ruby, Scala, SIMSCRIPT, Simula, Smalltalk, Swift, Vala and Visual Basic.NET. History The idea of ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]