Overview
Aims
Acquiring the fundamental notions and the latest developments in the field of component-based programming in order to develop competitive programs applied in various IT fields.ds;
Gain the knowledge needed to write programs in .NET and Java Netbeans.
Analysis and design of information systems: design, development, testing, implementation and maintenance of information systems and programs, preparing the related technical documentation.
Course contents
Chapter I Definition of software components 1.1. Basic terms: component, object, module, interface, reuse 1.2. Aspects of standardization Chapter II. Components, interfaces 2.1. Interface types for components 2.2. Client-server relationship in procedural, objective and component-based systems 2.3. Components in distributed systems Chapter III. Polymorphism 3.1. The concept of data type in programming languages 3.2. Extensibility of types and independent extensibility of components 3.3. Safety in the operation of component-based systems 3.4. Evolution of interfaces and contracts Chapter IV. Ways of implementing polymorphism 4.1. Types of inheritance 4.2. Advantages and disadvantages of using inheritance 4.3. Legacy of interfaces 4.4. Delegation, composition, inheritance and polymorphism. Chapter V. Aspects of scale and granularity of components 5.1. The impact of components on software development 5.2. Components and development process 5.3. Execution of component-based systems 5.4. Maintenance of component-based systems Chapter VI. Component-based systems architecture 6.1. Ways to reuse components 6.2. Types of components in relation to how to reuse 6.3. Design templates 6.4. Application frameworks Chapter VII. Programming styles in component-based systems 7.1. Connection-oriented programming 7.2. Events and messages 7.3. Dispatcher and metaprogramming interfaces 7.4. Script languages 7.5. OMG CORBA, OMA, Oracle: JavaBeans, Enterprise Java Beans, Microsoft: COM, ActiveX, COM +, .NET
Learning outcomes
Upon completion of the course, students must possess: a) systematic knowledge about the fundamentals of component-based programming; b) clear understanding of the terms component, interface, polymorphism; c) the similarities and differences between component-based programming and object-oriented programming in terms of inheritance and composition; d) the importance of the aspects of scale, granularity and architecture of the components;
Assessment
Final evaluation Project 50% , Evaluation during semester: Projects, essays, practical works 50%