Object-oriented programming (OOP) Books
Amazon Digital Services LLC - Kdp The Complete Rust Developer
£20.10
Amazon Digital Services LLC - Kdp Julia Programming For Beginners
£20.87
Amazon Digital Services LLC - Kdp Julia Programming for Machine Learning
£28.00
Amazon Digital Services LLC - Kdp Julia Programming for Web Development
£24.67
Amazon Digital Services LLC - Kdp JavaScript Objectoriented Programming
£15.41
Independently Published Chorus of Devoxx Poland 2022
£14.04
Roy McAllan The Python Flow System
£14.20
Independently Published Objectoriented Programming For game development
£11.92
Amazon Digital Services LLC - Kdp Asynchronous Programming With C 10
£12.00
Amazon Digital Services LLC - Kdp Software Design Patterns
£15.30
Amazon Digital Services LLC - Kdp Démystifier le code
£10.31
Amazon Digital Services LLC - Kdp Foundations of Software Architecture
£18.05
Pearson Education Java Software Structures
Book Synopsis
£168.88
Pearson Education (US) Agile Software Development
Book SynopsisDr. Alistair Cockburn is an internationally renowned expert on all aspects of software development, from object-oriented modeling and architecture, to methodology design, to project management and organizational alignment. One of the pioneers who coined the term agile software development, he co-authored the 2001 Agile Software Development Manifesto and the 2005 Declaration of Interdependence. Since 1975, he has led projects and taught in places from Oslo to Cape Town, from Vancouver to Beijing. His work has covered topics from design to management to testing, in research, in government, and in industry. His most recent book is Crystal Clear: A Human-Powered Methodology for Small Teams. His books Writing Effective Use Cases and Agile Software Development won back-to-back Jolt Productivity Awards in 2001 and 2002.Table of ContentsList of Figures xi List of Stories xvii Preface xxi Preface to Second Edition xxxi 0 Unknowable and Incommunicable 1 0.1 Unknowable and Incommunicable: Evolution 21 Chapter 1 A Cooperative Game of Invention and Communication 27 Chapter 1.1 A Cooperative Game of Invention and Communication: Evolution 47 Chapter 2 Individuals 65 Chapter 2.1 Individuals: Evolution 99 Chapter 3 Communication, Cooperating Teams 105 Chapter 3.1 Teams: Evolution 143 Chapter 4 Methodologies 147 Chapter 4.1 Methodologies: Evolution 207 Chapter 5 Agile and Self-Adapting 217 Chapter 5.1 Agile and Self-Adapting: Evolution 241 Chapter 6 The Crystal Methodologies 335 Chapter 6.1 The Crystal Methodologies: Evolution 351 Appendix A The Agile Software Development Manifesto 367 Appendix A.1 The Agile Software Development Manifesto and the Declaration of Interdependence 379 Appendix B Naur, Ehn, Musashi 391 Appendix B.1 Naur, Ehn, Musashi: Evolution 427 Appendix C Afterword 431 Appendix D Books and References 437 Index 453
£40.04
Taylor & Francis Inc Parallel Science and Engineering Applications
Book SynopsisDeveloped in the context of science and engineering applications, with each abstraction motivated by and further honed by specific application needs, Charm++ is a production-quality system that runs on almost all parallel computers available. Parallel Science and Engineering Applications: The Charm++ Approach surveys a diverse and scalable collection of science and engineering applications, most of which are used regularly on supercomputers by scientists to further their research.After a brief introduction to Charm++, the book presents several parallel CSE codes written in the Charm++ model, along with their underlying scientific and numerical formulations, explaining their parallelization strategies and parallel performance. These chapters demonstrate the versatility of Charm++ and its utility for a wide variety of applications, including molecular dynamics, cosmology, quantum chemistry, fracture simulations, agent-based simulations, and weather modeling. Trade Review"It succeeds perfectly and combines for the first time both Charm++ and significant application development in a single volume. It will provide a solid foundation for anyone who is considering using the most recent tools for developing applications for future ExascaIe platforms. I highly recommend this timely book for scientists and engineers." -Horst Simon, Lawrence Berkeley National Laboratory and University of California, BerkeleyTable of ContentsThe Charm++ Programming Model. Designing Charm++ Programs. Tools for Debugging and Performance Analysis. Scalable Molecular Dynamics with NAMD. OpenAtom: Ab initio Molecular Dynamics for Petascale Platforms. N-body Simulations with ChaNGa. Remote Visualization of Cosmological Data using Salsa. Improving Scalability of BRAMS: a Regional Weather Forecast Model. Crack Propagation Analysis with Automatic Load Balancing. Contagion Diffusion with EpiSimdemics.
£166.25
John Wiley & Sons Inc Data Structures and Algorithms in C
Book SynopsisThis second edition of Data Structures and Algorithms in C++ is designed to provide an introduction to data structures and algorithms, including their design, analysis, and implementation. The authors offer an introduction to object-oriented design with C++ and design patterns, including the use of class inheritance and generic programming through class and function templates, and retain a consistent object-oriented viewpoint throughout the book. This is a sister book to Goodrich & Tamassia's Data Structures and Algorithms in Java, but uses C++ as the basis language instead of Java. This C++ version retains the same pedagogical approach and general structure as the Java version so schools that teach data structures in both C++ and Java can share the same core syllabus. In terms of curricula based on the IEEE/ACM 2001 Computing Curriculum, this book is appropriate for use in the courses CS102 (I/O/B versions), CS103 (I/O/B versions), CS111 (A version), and CS112 (A/I/O/F/H veTable of Contents1 A C++ Primer 1 1.1 Basic C++ Programming Elements 2 1.1.1 A Simple C++ Program 2 1.1.2 Fundamental Types 4 1.1.3 Pointers, Arrays, and Structures 7 1.1.4 Named Constants, Scope, and Namespaces 13 1.2 Expressions 16 1.2.1 Changing Types through Casting 20 1.3 Control Flow 23 1.4 Functions 26 1.4.1 Argument Passing 28 1.4.2 Overloading and Inlining 30 1.5 Classes 32 1.5.1 Class Structure 33 1.5.2 Constructors and Destructors 37 1.5.3 Classes and Memory Allocation 40 1.5.4 Class Friends and Class Members 43 1.5.5 The Standard Template Library 45 1.6 C++ Program and File Organization 47 1.6.1 An Example Program 48 1.7 Writing a C++ Program53 1.7.1 Design 54 1.7.2 Pseudo-Code 54 1.7.3 Coding 55 1.7.4 Testing and Debugging 57 1.8 Exercises 60 2 Object-Oriented Design 65 2.1 Goals, Principles, and Patterns 66 2.1.1 Object-Oriented Design Goals 66 2.1.2 Object-Oriented Design Principles 67 2.1.3 Design Patterns 70 2.2 Inheritance and Polymorphism 71 2.2.1 Inheritance in C++ 71 2.2.2 Polymorphism 78 2.2.3 Examples of Inheritance in C++ 79 2.2.4 Multiple Inheritance and Class Casting 84 2.2.5 Interfaces and Abstract Classes 87 2.3 Templates 90 2.3.1 Function Templates 90 2.3.2 Class Templates 91 2.4 Exceptions 93 2.4.1 Exception Objects 93 2.4.2 Throwing and Catching Exceptions 94 2.4.3 Exception Specification 96 2.5 Exercises 98 3 Arrays, Linked Lists, and Recursion 103 3.1 Using Arrays 104 3.1.1 Storing Game Entries in an Array 104 3.1.2 Sorting an Array 109 3.1.3 Two-Dimensional Arrays and Positional Games 111 3.2 Singly Linked Lists 117 3.2.1 Implementing a Singly Linked List 117 3.2.2 Insertion to the Front of a Singly Linked List 119 3.2.3 Removal from the Front of a Singly Linked List 119 3.2.4 Implementing a Generic Singly Linked List 121 3.3 Doubly Linked Lists 123 3.3.1 Insertion into a Doubly Linked List 123 3.3.2 Removal from a Doubly Linked List 124 3.3.3 A C++ Implementation 125 3.4 Circularly Linked Lists and List Reversal 129 3.4.1 Circularly Linked Lists 129 3.4.2 Reversing a Linked List 133 3.5 Recursion 134 3.5.1 Linear Recursion 140 3.5.2 Binary Recursion 144 3.5.3 Multiple Recursion 147 3.6 Exercises 149 4 Analysis Tools 153 4.1 The Seven Functions Used in This Book 154 4.1.1 The Constant Function 154 4.1.2 The Logarithm Function 154 4.1.3 The Linear Function 156 4.1.4 The N-Log-N Function 156 4.1.5 The Quadratic Function 156 4.1.6 The Cubic Function and Other Polynomials 158 4.1.7 The Exponential Function 159 4.1.8 Comparing Growth Rates 161 4.2 Analysis of Algorithms 162 4.2.1 Experimental Studies 163 4.2.2 Primitive Operations 164 4.2.3 Asymptotic Notation 166 4.2.4 Asymptotic Analysis 170 4.2.5 Using the Big-Oh Notation 172 4.2.6 A Recursive Algorithm for Computing Powers 176 4.2.7 Some More Examples of Algorithm Analysis 177 4.3 Simple Justification Techniques 181 4.3.1 By Example 181 4.3.2 The “Contra” Attack 181 4.3.3 Induction and Loop Invariants 182 4.4 Exercises 185 5 Stacks, Queues, and Deques 193 5.1 Stacks 194 5.1.1 The Stack Abstract Data Type 195 5.1.2 The STL Stack 196 5.1.3 A C++ Stack Interface 196 5.1.4 A Simple Array-Based Stack Implementation 198 5.1.5 Implementing a Stack with a Generic Linked List 202 5.1.6 Reversing a Vector Using a Stack 203 5.1.7 Matching Parentheses and HTML Tags 204 5.2 Queues 208 5.2.1 The Queue Abstract Data Type 208 5.2.2 The STL Queue 209 5.2.3 A C++ Queue Interface 210 5.2.4 A Simple Array-Based Implementation 211 5.2.5 Implementing a Queue with a Circularly Linked List 213 5.3 Double-Ended Queues 217 5.3.1 The Deque Abstract Data Type 217 5.3.2 The STL Deque 218 5.3.3 Implementing a Deque with a Doubly Linked List 218 5.3.4 Adapters and the Adapter Design Pattern 220 5.4 Exercises 223 6 List and Iterator ADTs 227 6.1 Vectors 228 6.1.1 The Vector Abstract Data Type 228 6.1.2 A Simple Array-Based Implementation 229 6.1.3 An Extendable Array Implementation 231 6.1.4 STL Vectors 236 6.2 Lists 238 6.2.1 Node-Based Operations and Iterators 238 6.2.2 The List Abstract Data Type 240 6.2.3 Doubly Linked List Implementation 242 6.2.4 STL Lists 247 6.2.5 STL Containers and Iterators 248 6.3 Sequences 255 6.3.1 The Sequence Abstract Data Type 255 6.3.2 Implementing a Sequence with a Doubly Linked List .255 6.3.3 Implementing a Sequence with an Array 257 6.4 Case Study: Bubble-Sort on a Sequence 259 6.4.1 The Bubble-Sort Algorithm 259 6.4.2 A Sequence-Based Analysis of Bubble-Sort 260 6.5 Exercises 262 7 Trees 267 7.1 General Trees 268 7.1.1 Tree Definitions and Properties 269 7.1.2 Tree Functions 272 7.1.3 A C++ Tree Interface 273 7.1.4 A Linked Structure for General Trees 274 7.2 Tree Traversal Algorithms 275 7.2.1 Depth and Height 275 7.2.2 Preorder Traversal 278 7.2.3 Postorder Traversal 281 7.3 Binary Trees 284 7.3.1 The Binary Tree ADT 285 7.3.2 A C++ Binary Tree Interface 286 7.3.3 Properties of Binary Trees 287 7.3.4 A Linked Structure for Binary Trees 289 7.3.5 A Vector-Based Structure for Binary Trees 295 7.3.6 Traversals of a Binary Tree 297 7.3.7 The Template Function Pattern 303 7.3.8 Representing General Trees with Binary Trees 309 7.4 Exercises 310 8 Heaps and Priority Queues 321 8.1 The Priority Queue Abstract Data Type 322 8.1.1 Keys, Priorities, and Total Order Relations 322 8.1.2 Comparators 324 8.1.3 The Priority Queue ADT 327 8.1.4 A C++ Priority Queue Interface 328 8.1.5 Sorting with a Priority Queue 329 8.1.6 The STL priority queue Class 330 8.2 Implementing a Priority Queue with a List 331 8.2.1 A C++ Priority Queue Implementation using a List 333 8.2.2 Selection-Sort and Insertion-Sort 335 8.3 Heaps 337 8.3.1 The Heap Data Structure 337 8.3.2 Complete Binary Trees and Their Representation 340 8.3.3 Implementing a Priority Queue with a Heap 344 8.3.4 C++ Implementation 349 8.3.5 Heap-Sort 351 8.3.6 Bottom-Up Heap Construction ⋆ 353 8.4 Adaptable Priority Queues 357 8.4.1 A List-Based Implementation 358 8.4.2 Location-Aware Entries 360 8.5 Exercises 361 9 Hash Tables, Maps, and Skip Lists 367 9.1 Maps 368 9.1.1 The Map ADT 369 9.1.2 A C++ Map Interface 371 9.1.3 The STL map Class 372 9.1.4 A Simple List-Based Map Implementation 374 9.2 Hash Tables 375 9.2.1 Bucket Arrays 375 9.2.2 Hash Functions 376 9.2.3 Hash Codes 376 9.2.4 Compression Functions 380 9.2.5 Collision-Handling Schemes 382 9.2.6 Load Factors and Rehashing 386 9.2.7 A C++ Hash Table Implementation 387 9.3 Ordered Maps 394 9.3.1 Ordered Search Tables and Binary Search 395 9.3.2 Two Applications of Ordered Maps 399 9.4 Skip Lists 402 9.4.1 Search and Update Operations in a Skip List 404 9.4.2 A Probabilistic Analysis of Skip Lists ⋆ 408 9.5 Dictionaries 411 9.5.1 The Dictionary ADT 411 9.5.2 A C++ Dictionary Implementation 413 9.5.3 Implementations with Location-Aware Entries 415 9.6 Exercises 417 10 Search Trees 423 10.1 Binary Search Trees 424 10.1.1 Searching 426 10.1.2 Update Operations 428 10.1.3 C++ Implementation of a Binary Search Tree 432 10.2 AVL Trees438 10.2.1 Update Operations 440 10.2.2 C++ Implementation of an AVL Tree 446 10.3 Splay Trees 450 10.3.1 Splaying 450 10.3.2 When to Splay 454 10.3.3 Amortized Analysis of Splaying ⋆456 10.4 (2,4) Trees 461 10.4.1 Multi-Way Search Trees 461 10.4.2 Update Operations for (2,4) Trees 467 10.5 Red-Black Trees473 10.5.1 Update Operations 475 10.5.2 C++ Implementation of a Red-Black Tree 488 10.6 Exercises 492 11 Sorting, Sets, and Selection 499 11.1 Merge-Sort500 11.1.1 Divide-and-Conquer 500 11.1.2 Merging Arrays and Lists 505 11.1.3 The Running Time of Merge-Sort 508 11.1.4 C++ Implementations of Merge-Sort 509 11.1.5 Merge-Sort and Recurrence Equations ⋆ 511 11.2 Quick-Sort 513 11.2.1 Randomized Quick-Sort 521 11.2.2 C++ Implementations and Optimizations 523 11.3 Studying Sorting through an Algorithmic Lens 526 11.3.1 A Lower Bound for Sorting 526 11.3.2 Linear-Time Sorting: Bucket-Sort and Radix-Sort 528 11.3.3 Comparing Sorting Algorithms 531 11.4 Sets and Union/Find Structures 533 11.4.1 The Set ADT 533 11.4.2 Mergable Sets and the Template Method Pattern 534 11.4.3 Partitions with Union-Find Operations 538 11.5 Selection 542 11.5.1 Prune-and-Search 542 11.5.2 Randomized Quick-Select 543 11.5.3 Analyzing Randomized Quick-Select 544 11.6 Exercises 545 12 Strings and Dynamic Programming 553 12.1 String Operations 554 12.1.1 The STL String Class 555 12.2 Dynamic Programming 557 12.2.1 Matrix Chain-Product 557 12.2.2 DNA and Text Sequence Alignment 560 12.3 Pattern Matching Algorithms 564 12.3.1 Brute Force 564 12.3.2 The Boyer-Moore Algorithm 566 12.3.3 The Knuth-Morris-Pratt Algorithm 570 12.4 Text Compression and the Greedy Method 575 12.4.1 The Huffman-Coding Algorithm 576 12.4.2 The Greedy Method 577 12.5 Tries 578 12.5.1 Standard Tries 578 12.5.2 Compressed Tries 582 12.5.3 Suffix Tries 584 12.5.4 Search Engines 586 12.6 Exercises 587 13 Graph Algorithms 593 13.1 Graphs 594 13.1.1 The Graph ADT 599 13.2 Data Structures for Graphs 600 13.2.1 The Edge List Structure 600 13.2.2 The Adjacency List Structure 603 13.2.3 The Adjacency Matrix Structure 605 13.3 Graph Traversals 607 13.3.1 Depth-First Search 607 13.3.2 Implementing Depth-First Search 611 13.3.3 A Generic DFS Implementation in C++ 613 13.3.4 Polymorphic Objects and Decorator Values ⋆ 621 13.3.5 Breadth-First Search 623 13.4 Directed Graphs 626 13.4.1 Traversing a Digraph 628 13.4.2 Transitive Closure 630 13.4.3 Directed Acyclic Graphs 633 13.5 Shortest Paths 637 13.5.1 Weighted Graphs 637 13.5.2 Dijkstra’s Algorithm 639 13.6 Minimum Spanning Trees 645 13.6.1 Kruskal’s Algorithm 647 13.6.2 The Prim-Jarn´ık Algorithm 651 13.7 Exercises 654 14 Memory Management and B-Trees 665 14.1 Memory Management 666 14.1.1 Memory Allocation in C++ 669 14.1.2 Garbage Collection 671 14.2 External Memory and Caching 673 14.2.1 The Memory Hierarchy 673 14.2.2 Caching Strategies 674 14.3 External Searching and B-Trees679 14.3.1 (a,b) Trees 680 14.3.2 B-Trees 682 14.4 External-Memory Sorting 683 14.4.1 Multi-Way Merging 684 14.5 Exercises 685 A Useful Mathematical Facts 689 Bibliography 697 Index 702 1 A C++ Primer 1 1.1 Basic C++ Programming Elements 2 1.1.1 A Simple C++ Program 2 1.1.2 Fundamental Types 4 1.1.3 Pointers, Arrays, and Structures 7 1.1.4 Named Constants, Scope, and Namespaces 13 1.2 Expressions 16 1.2.1 Changing Types through Casting 20 1.3 Control Flow 23 1.4 Functions 26 1.4.1 Argument Passing 28 1.4.2 Overloading and Inlining 30 1.5 Classes 32 1.5.1 Class Structure 33 1.5.2 Constructors and Destructors 37 1.5.3 Classes and Memory Allocation 40 1.5.4 Class Friends and Class Members 43 1.5.5 The Standard Template Library 45 1.6 C++ Program and File Organization 47 1.6.1 An Example Program 48 1.7 Writing a C++ Program53 1.7.1 Design 54 1.7.2 Pseudo-Code 54 1.7.3 Coding 55 1.7.4 Testing and Debugging 57 1.8 Exercises 60 2 Object-Oriented Design 65 2.1 Goals, Principles, and Patterns 66 2.1.1 Object-Oriented Design Goals 66 2.1.2 Object-Oriented Design Principles 67 2.1.3 Design Patterns 70 2.2 Inheritance and Polymorphism 71 2.2.1 Inheritance in C++ 71 2.2.2 Polymorphism 78 2.2.3 Examples of Inheritance in C++ 79 2.2.4 Multiple Inheritance and Class Casting 84 2.2.5 Interfaces and Abstract Classes 87 2.3 Templates 90 2.3.1 Function Templates 90 2.3.2 Class Templates 91 2.4 Exceptions 93 2.4.1 Exception Objects 93 2.4.2 Throwing and Catching Exceptions 94 2.4.3 Exception Specification 96 2.5 Exercises 98 3 Arrays, Linked Lists, and Recursion 103 3.1 Using Arrays 104 3.1.1 Storing Game Entries in an Array 104 3.1.2 Sorting an Array 109 3.1.3 Two-Dimensional Arrays and Positional Games 111 3.2 Singly Linked Lists 117 3.2.1 Implementing a Singly Linked List 117 3.2.2 Insertion to the Front of a Singly Linked List 119 3.2.3 Removal from the Front of a Singly Linked List 119 3.2.4 Implementing a Generic Singly Linked List 121 3.3 Doubly Linked Lists 123 3.3.1 Insertion into a Doubly Linked List 123 3.3.2 Removal from a Doubly Linked List 124 3.3.3 A C++ Implementation 125 3.4 Circularly Linked Lists and List Reversal 129 3.4.1 Circularly Linked Lists 129 3.4.2 Reversing a Linked List 133 3.5 Recursion 134 3.5.1 Linear Recursion 140 3.5.2 Binary Recursion 144 3.5.3 Multiple Recursion 147 3.6 Exercises 149 4 Analysis Tools 153 4.1 The Seven Functions Used in This Book 154 4.1.1 The Constant Function 154 4.1.2 The Logarithm Function 154 4.1.3 The Linear Function 156 4.1.4 The N-Log-N Function 156 4.1.5 The Quadratic Function 156 4.1.6 The Cubic Function and Other Polynomials 158 4.1.7 The Exponential Function 159 4.1.8 Comparing Growth Rates 161 4.2 Analysis of Algorithms 162 4.2.1 Experimental Studies 163 4.2.2 Primitive Operations 164 4.2.3 Asymptotic Notation 166 4.2.4 Asymptotic Analysis 170 4.2.5 Using the Big-Oh Notation 172 4.2.6 A Recursive Algorithm for Computing Powers 176 4.2.7 Some More Examples of Algorithm Analysis 177 4.3 Simple Justification Techniques 181 4.3.1 By Example 181 4.3.2 The “Contra” Attack 181 4.3.3 Induction and Loop Invariants 182 4.4 Exercises 185 5 Stacks, Queues, and Deques 193 5.1 Stacks 194 5.1.1 The Stack Abstract Data Type 195 5.1.2 The STL Stack 196 5.1.3 A C++ Stack Interface 196 5.1.4 A Simple Array-Based Stack Implementation 198 5.1.5 Implementing a Stack with a Generic Linked List 202 5.1.6 Reversing a Vector Using a Stack 203 5.1.7 Matching Parentheses and HTML Tags 204 5.2 Queues 208 5.2.1 The Queue Abstract Data Type 208 5.2.2 The STL Queue 209 5.2.3 A C++ Queue Interface 210 5.2.4 A Simple Array-Based Implementation 211 5.2.5 Implementing a Queue with a Circularly Linked List 213 5.3 Double-Ended Queues 217 5.3.1 The Deque Abstract Data Type 217 5.3.2 The STL Deque 218 5.3.3 Implementing a Deque with a Doubly Linked List 218 5.3.4 Adapters and the Adapter Design Pattern 220 5.4 Exercises 223 6 List and Iterator ADTs 227 6.1 Vectors 228 6.1.1 The Vector Abstract Data Type 228 6.1.2 A Simple Array-Based Implementation 229 6.1.3 An Extendable Array Implementation 231 6.1.4 STL Vectors 236 6.2 Lists 238 6.2.1 Node-Based Operations and Iterators 238 6.2.2 The List Abstract Data Type 240 6.2.3 Doubly Linked List Implementation 242 6.2.4 STL Lists 247 6.2.5 STL Containers and Iterators 248 6.3 Sequences255 6.3.1 The Sequence Abstract Data Type 255 6.3.2 Implementing a Sequence with a Doubly Linked List .255 6.3.3 Implementing a Sequence with an Array 257 6.4 Case Study: Bubble-Sort on a Sequence 259 6.4.1 The Bubble-Sort Algorithm 259 6.4.2 A Sequence-Based Analysis of Bubble-Sort 260 6.5 Exercises 262 7 Trees 267 7.1 General Trees 268 7.1.1 Tree Definitions and Properties 269 7.1.2 Tree Functions 272 7.1.3 A C++ Tree Interface 273 7.1.4 A Linked Structure for General Trees 274 7.2 Tree Traversal Algorithms 275 7.2.1 Depth and Height 275 7.2.2 Preorder Traversal 278 7.2.3 Postorder Traversal 281 7.3 Binary Trees 284 7.3.1 The Binary Tree ADT 285 7.3.2 A C++ Binary Tree Interface 286 7.3.3 Properties of Binary Trees 287 7.3.4 A Linked Structure for Binary Trees 289 7.3.5 A Vector-Based Structure for Binary Trees 295 7.3.6 Traversals of a Binary Tree 297 7.3.7 The Template Function Pattern 303 7.3.8 Representing General Trees with Binary Trees 309 7.4 Exercises 310 8 Heaps and Priority Queues 321 8.1 The Priority Queue Abstract Data Type 322 8.1.1 Keys, Priorities, and Total Order Relations 322 8.1.2 Comparators 324 8.1.3 The Priority Queue ADT 327 8.1.4 A C++ Priority Queue Interface 328 8.1.5 Sorting with a Priority Queue 329 8.1.6 The STL priority queue Class 330 8.2 Implementing a Priority Queue with a List 331 8.2.1 A C++ Priority Queue Implementation using a List 333 8.2.2 Selection-Sort and Insertion-Sort 335 8.3 Heaps 337 8.3.1 The Heap Data Structure 337 8.3.2 Complete Binary Trees and Their Representation 340 8.3.3 Implementing a Priority Queue with a Heap 344 8.3.4 C++ Implementation 349 8.3.5 Heap-Sort 351 8.3.6 Bottom-Up Heap Construction ⋆353 8.4 Adaptable Priority Queues 357 8.4.1 A List-Based Implementation 358 8.4.2 Location-Aware Entries 360 8.5 Exercises 361 9 Hash Tables, Maps, and Skip Lists 367 9.1 Maps 368 9.1.1 The Map ADT 369 9.1.2 A C++ Map Interface 371 9.1.3 The STL map Class 372 9.1.4 A Simple List-Based Map Implementation 374 9.2 Hash Tables 375 9.2.1 Bucket Arrays 375 9.2.2 Hash Functions 376 9.2.3 Hash Codes 376 9.2.4 Compression Functions 380 9.2.5 Collision-Handling Schemes 382 9.2.6 Load Factors and Rehashing 386 9.2.7 A C++ Hash Table Implementation 387 9.3 Ordered Maps 394 9.3.1 Ordered Search Tables and Binary Search 395 9.3.2 Two Applications of Ordered Maps 399 9.4 Skip Lists 402 9.4.1 Search and Update Operations in a Skip List 404 9.4.2 A Probabilistic Analysis of Skip Lists ⋆408 9.5 Dictionaries 411 9.5.1 The Dictionary ADT 411 9.5.2 A C++ Dictionary Implementation 413 9.5.3 Implementations with Location-Aware Entries 415 9.6 Exercises 417 10 Search Trees 423 10.1 Binary Search Trees 424 10.1.1 Searching 426 10.1.2 Update Operations 428 10.1.3 C++ Implementation of a Binary Search Tree 432 10.2 AVL Trees438 10.2.1 Update Operations 440 10.2.2 C++ Implementation of an AVL Tree 446 10.3 Splay Trees 450 10.3.1 Splaying 450 10.3.2 When to Splay 454 10.3.3 Amortized Analysis of Splaying ⋆456 10.4 (2,4) Trees 461 10.4.1 Multi-Way Search Trees 461 10.4.2 Update Operations for (2,4) Trees 467 10.5 Red-Black Trees473 10.5.1 Update Operations 475 10.5.2 C++ Implementation of a Red-Black Tree 488 10.6 Exercises 492 11 Sorting, Sets, and Selection 499 11.1 Merge-Sort500 11.1.1 Divide-and-Conquer 500 11.1.2 Merging Arrays and Lists 505 11.1.3 The Running Time of Merge-Sort 508 11.1.4 C++ Implementations of Merge-Sort 509 11.1.5 Merge-Sort and Recurrence Equations ⋆511 11.2 Quick-Sort 513 11.2.1 Randomized Quick-Sort 521 11.2.2 C++ Implementations and Optimizations 523 11.3 Studying Sorting through an Algorithmic Lens 526 11.3.1 A Lower Bound for Sorting 526 11.3.2 Linear-Time Sorting: Bucket-Sort and Radix-Sort 528 11.3.3 Comparing Sorting Algorithms 531 11.4 Sets and Union/Find Structures 533 11.4.1 The Set ADT 533 11.4.2 Mergable Sets and the Template Method Pattern 534 11.4.3 Partitions with Union-Find Operations 538 11.5 Selection 542 11.5.1 Prune-and-Search 542 11.5.2 Randomized Quick-Select 543 11.5.3 Analyzing Randomized Quick-Select 544 11.6 Exercises 545 12 Strings and Dynamic Programming 553 12.1 String Operations 554 12.1.1 The STL String Class 555 12.2 Dynamic Programming 557 12.2.1 Matrix Chain-Product 557 12.2.2 DNA and Text Sequence Alignment 560 12.3 Pattern Matching Algorithms 564 12.3.1 Brute Force 564 12.3.2 The Boyer-Moore Algorithm 566 12.3.3 The Knuth-Morris-Pratt Algorithm 570 12.4 Text Compression and the Greedy Method 575 12.4.1 The Huffman-Coding Algorithm 576 12.4.2 The Greedy Method 577 12.5 Tries 578 12.5.1 Standard Tries 578 12.5.2 Compressed Tries 582 12.5.3 Suffix Tries 584 12.5.4 Search Engines 586 12.6 Exercises 587 13 Graph Algorithms 593 13.1 Graphs 594 13.1.1 The Graph ADT 599 13.2 Data Structures for Graphs 600 13.2.1 The Edge List Structure 600 13.2.2 The Adjacency List Structure 603 13.2.3 The Adjacency Matrix Structure 605 13.3 Graph Traversals 607 13.3.1 Depth-First Search 607 13.3.2 Implementing Depth-First Search 611 13.3.3 A Generic DFS Implementation in C++ 613 13.3.4 Polymorphic Objects and Decorator Values ⋆621 13.3.5 Breadth-First Search 623 13.4 Directed Graphs 626 13.4.1 Traversing a Digraph 628 13.4.2 Transitive Closure 630 13.4.3 Directed Acyclic Graphs 633 13.5 Shortest Paths 637 13.5.1 Weighted Graphs 637 13.5.2 Dijkstra’s Algorithm 639 13.6 Minimum Spanning Trees 645 13.6.1 Kruskal’s Algorithm 647 13.6.2 The Prim-Jarn´ık Algorithm 651 13.7 Exercises 654 14 Memory Management and B-Trees 665 14.1 Memory Management 666 14.1.1 Memory Allocation in C++ 669 14.1.2 Garbage Collection 671 14.2 External Memory and Caching 673 14.2.1 The Memory Hierarchy 673 14.2.2 Caching Strategies 674 14.3 External Searching and B-Trees679 14.3.1 (a,b) Trees 680 14.3.2 B-Trees 682 14.4 External-Memory Sorting 683 14.4.1 Multi-Way Merging 684 14.5 Exercises 685 A Useful Mathematical Facts 689 Bibliography 697 Index 702
£159.55
John Wiley & Sons Inc UML in Practice
Book SynopsisUML is the de facto industry standard modeling language for specifying, visualizing, constructing, and documenting aspects of the design of software systems. UML in Practice offers practical, clear guidance on the real--life usage of UML, mentoring software developers through every aspect of the modeling process.Table of ContentsForeword ix Introduction xi Acknowledgements xv PART 1 FUNCTIONAL VIEW 1 1 Case study: automatic teller machine 3 1.1 Step 1 – Identifying the actors of the ATM 5 1.2 Step 2 – Identifying use cases 8 1.3 Step 3 – Creating use case diagrams 10 1.4 Step 4 – Textual description of use cases 14 1.5 Step 5 – Graphical description of use cases 20 1.6 Step 6 – Organising the use cases 26 2 Complementary exercises 37 2.1 Step 1 – Business modelling 53 2.2 Step 2 – Defining system requirements 57 Appendix A: Glossary & tips 65 PART 2 STATIC VIEW 71 3 Case study: flight booking system 73 3.1 75 3.2 Step 2 – Modelling sentences 6, 7 and 10 77 3.3 Step 3 – Modelling sentences 8 and 9 82 3.4 Step 4 – Modelling sentences 3, 4 and 5 86 3.5 Step 5 – Adding attributes, constraints and qualifiers 89 3.6 Step 6 – Using analysis patterns 94 3.7 Step 7 – Structuring into packages 98 3.8 Step 8 – Generalisation and re-use 105 4 Complementary exercises 113 Appendix B: Glossary & tips 149 Step 1– Modelling sentences 1 and 2 PART 3 DYNAMIC VIEW 157 5 Case study: coin-operated pay phone 159 5.1 Step 1 – Identifying the actors and use cases 161 5.2 Step 2 – Realising the system sequence diagram 164 5.3 Step 3 – Representing the dynamic context 166 5.4 Step 4 – In-depth description using a state diagram 168 6 Complementary exercises 185 Apendix C: Glossary & tips 207 PART 4 DESIGN 213 7 Case study: training request 215 7.1 Step 1 – Defining iterations 217 7.2 Step 2 – Defining the system architecture 219 7.3 Step 3 – Defining system operations (iteration 1) 224 7.4 Step 4 – Operation contracts (iteration 1) 225 7.5 Step 5 – Interaction diagrams (iteration 1) 228 7.6 Step 6 – Design class diagrams (iteration 1) 237 7.7 Step 7 – Defining the system operations (iteration 2) 245 7.8 Step 8 – Operation contracts (iteration 2) 247 7.9 Step 9 – Interaction diagrams (iteration 2) 250 7.10 Step 10 – Design class diagrams (iteration 2) 252 7.11 Step 11 – Back to architecture 253 7.12 Step 12 – Transition to Java code 254 7.13 Step 13 – Putting the application into action 262 8 Complementary exercises 267 Appendix D: Glossary & tips 283 Index 293
£28.90
John Wiley & Sons Inc Data Structures and Algorithms with
Book SynopsisAn object-oriented learning framework for creating good software design. Bruno Preiss presents readers with a modern, object-oriented perspective for looking at data structures and algorithms, clearly showing how to use polymorphism and inheritance, and including fragments from working and tested programs.Table of ContentsAlgorithm Analysis. Asymptotic Notation. Foundational Data Structures. Data Types and Abstraction. Stacks, Queues and Deques. Ordered Lists and Sorted Lists. Hashing, Hash Tables and Scatter Tables. Trees. Search Trees. Heaps and Priority Queues. Sets, Multisets and Partitions. Dynamic Storage Allocation. Algorithmic Patterns and Problem Solvers. Sorting Algorithms and Sorters. Graphs and Graph Algorithms. Appendices. Index.
£180.86
John Wiley & Sons Inc Programming with Objects
Book SynopsisPROGRAMMING WITH OBJECTS Your essential comparative approach to learning C++ and Java Programming with Objects: A Comparative Presentation of Object-Oriented Programming with C++ and Java, a comparative presentation of object-oriented programming with two of the most popular programming languages of today, teaches vital skills and techniques for the Internet age. Based on highly successful courses taught by the author, this book answers the need for a comprehensive educational program on the subject of object-oriented programming. In a clear and accessible format, the author compares and contrasts both languages, from basic language constructs to how both languages are used in application-level programming, such as graphics programming, network programming, and database programming. Since both C++ and Java were born out of the same language, C, learning these two languages together has several distinct advantages: Because they have much in common aTrade Review"...a wonderful volume...a very worthwhile read...essential..." (Choice, September 2003)Table of ContentsWhy OO Programming - Some Parallels with Things at Large. Baby Steps. The Notion of a Class and Some Other Key Ideas. Strings. Using the Container Classes. The Primitive Types and Their Input/Output. Declarations, Definitions, and Initializations. Object Reference and Memory Allocation. Functions and Methods. Handling Exceptions. Classes, The Rest of the Story. Overloading Operators in C++. Generics and Templates. Modeling Diagrams for OO Programs. Extending Classes. Multiple Inheritance in C++. OO for Graphical User Interfaces, A Tour of Three Toolkits. Multithreaded Object-Oriented Programming. Network Programming. Database Programming.
£99.86
John Wiley & Sons Engineering Distributed Objects
Book SynopsisWolfgang Emmerich Engineering Distributed Objects The pay-offs for creating distributed applications are in achieving portability, scalability and fault-tolerance. In order to simplify building software that performs robustly regardless of platform or network infrastructure, a new strata of 'middleware' has been created.Trade Review"recommend..." --CVu, April 2001 "This remarkable book tackles distributed systems in relation to object-orientation and middle-ware. Anyone designing systems today should have a copy of this book on the shelf." --Computer Bulletin ...Book of the Month, May 2001Table of ContentsCONCEPTS. Distributed Systems. Designing Distributed Objects. MIDDLEWARE FOR DISTRIBUTED OBJECTS. Principles of Object-Oriented Middleware. CORBA, COM and Java/RMI. Resolving Heterogeneity. Dynamic Object Requests. COMMON DESIGN PROBLEMS. Advanced Communication between Distributed Objects. Locating Distributed Objects. Life Cycle of Distributed Objects. Object Persistence. Distributed Object Transactions. Security. A Full CORBA C++ Implementation of Soccer Example. Bibliography. Index.
£51.25
John Wiley & Sons Inc ObjectOriented Simulation
Book SynopsisThe second part of a yearly series on simulation technology, OBJECT-ORIENTED SIMULATION presents an outstanding variety of the very latest advances in simulation techniques. This leading-edge volume contains a cohesive selection of presentations written by the world-renowned experts in a broad range of topics. OBJECT-ORIENTED SIMULATION is a key resource for anyone involved in computer simulator research and design as well as developers, producers, scholars, and managers. It is an excellent tool for preparing proposals for simulation in commercial and military fields.Table of ContentsPreface. Object-Oriented Simulation and Operas (G. Yeh, et al.). Object-Oriented Simulation Languages and Environments: AFour-Level Architecture (J. Miller, et al.). The Object Flow Model for Object-Oriented Simulation andDatabase Application Modeling (L. Pollacia and L. Delcambre). Reusable Simulation Models in an Object-Oriented Framework (T. Kim and M. Ahn). Object-Oriented Frameworks for Multilevel Simulation Modeling (D. Popken and A. Sinha). Design Strategies for Object-Oriented Simulation Testbeds that Support Software Integration (M. Hilton and C. Anken). Automation of Transformation Schemas for Object-OrientedSimulations (C. Coomber). Steps to an Ecology of Actor Simulation (A. Senteni). Key Words. About the Editors.
£159.26
Centre for the Study of Language & Information Literate Programming
Book SynopsisAn anthology of essays from the inventor of literate programming includes Knuth's early papers on related topics such as structured programming, as well as the Computer Journal article that launched literate programming itself.Table of Contents1. Computer programming as an art; 2. Structured programming with go to statements; 3. A structured program to generate all topological sorting arrangements; 4. Literate programming; 5. Programming pearls: sampling; 6. Programming pearls, continued: common words; 7. How to read a WEB; 8. Excerpts from the programs for TEX and METAFONT; 9. Mathematical writing; 10. The errors of TEX; 11. The error log of TEX; 12. An example of CWEB; Further reading; Index.
£26.50
O'Reilly Media Modernizing Enterprise Java
Book SynopsisThis practical book helps developers examine these long established models and demonstrates how to bring monolithic applications successfully into the future. Relying on their years of modernization experience, authors Markus Eisele and Natale Vinto walk you through the steps necessary to update your application.
£39.74
John Wiley & Sons Inc How to Implement Market Models Using VBA
Book SynopsisAccessible VBA coding for complex financial modelling How to Implement Market Models Using VBA makes solving complex valuation issues accessible to any financial professional with a taste for mathematics.Table of ContentsPreface ix Acknowledgements xi Abbreviations xiii About the Author xv CHAPTER 1 The Basics of VBA Programming 1 1.1 Getting started 1 1.2 VBA objects and syntax 2 1.2.1 The object-oriented basic syntax 3 1.2.2 Using objects 3 1.3 Variables 5 1.3.1 Variable declaration 5 1.3.2 Some usual objects 7 1.3.3 Arrays 9 1.4 Arithmetic 10 1.5 Subroutines and functions 13 1.5.1 Subroutines 14 1.5.2 Functions 15 1.5.3 Operations on one-dimensional arrays 16 1.5.4 Operations on two-dimensional arrays (matrices) 16 1.5.5 Operations with dates 19 1.6 Custom objects 21 1.6.1 Types 21 1.6.2 Classes 22 1.7 Debugging 24 1.7.1 Error handling 24 1.7.2 Tracking the code execution 25 CHAPTER 2 Mathematical Algorithms 29 2.1 Introduction 29 2.2 Sorting lists 29 2.2.1 Shell sort 29 2.2.2 Quick sort 32 2.3 Implicit equations 34 2.4 Search for extrema 36 2.4.1 The Nelder-Mead algorithm 36 2.4.2 The simulated annealing 40 2.5 Linear algebra 43 2.5.1 Matrix inversion 44 2.5.2 Cholesky decomposition 46 2.5.3 Interpolation 48 2.5.4 Integration 57 2.5.5 Principal Component Analysis 60 CHAPTER 3 Vanilla Instruments 67 3.1 Definitions 67 3.2 Fixed income 67 3.2.1 Bond market 68 3.2.2 Interbank market 72 3.3 Vanilla derivatives 75 3.3.1 Forward contracts 75 3.3.2 Swaps 77 3.3.3 Bond futures 81 3.4 Options basics 84 3.4.1 Brownian motion 84 3.4.2 Ito integral 85 3.4.3 Ito formula 86 3.4.4 Black–Scholes basic model 89 3.4.5 Risk-neutral probability 90 3.4.6 Change of probability 90 3.4.7 Martingale and numeraires 92 3.4.8 European-style options pricing 94 3.5 First generation exotic options 95 3.5.1 Barrier options 95 3.5.2 Quanto options 102 CHAPTER 4 Numerical Solutions 105 4.1 Finite differences 105 4.1.1 Generic equation 105 4.1.2 Implementation 106 4.2 Trees 112 4.2.1 Binomial trees 112 4.2.2 Trinomial trees 116 4.3 Monte-Carlo scenarios 116 4.3.1 Uniform number generator 117 4.3.2 From uniform to Gaussian numbers 127 4.4 Simulation and regression 129 4.5 Double-barrier analytical approximation 134 CHAPTER 5 Monte-Carlo Pricing Issues 139 5.1 Multi-asset simulation 139 5.1.1 The correlations issue 139 5.1.2 The Gaussian case 139 5.1.3 Exotics 143 5.2 Discretization schemes 146 5.3 Variance reduction techniques 147 5.3.1 Antithetic variates 147 5.3.2 Importance sampling 148 5.3.3 Control variates 153 CHAPTER 6 Yield Curve Models 163 6.1 Short rate models 163 6.1.1 Introduction 163 6.1.2 Hull and White one-factor model 164 6.1.3 Gaussian two-factor model 180 6.1.4 Hull and White two-factor model 203 6.2 Forward rate models 204 6.2.1 Generic Heath-Jarrow-Morton 205 6.2.2 LMM (LIBOR market model) 216 CHAPTER 7 Stochastic Volatilities 233 7.1 The Heston model 234 7.1.1 Code 234 7.1.2 A faster algorithm 239 7.1.3 Calibration 248 7.2 Barrier options 254 7.2.1 Numerical results 257 7.2.2 Code 257 7.3 Asian-style options 260 7.4 SABR model 264 7.4.1 Caplets 264 7.4.2 Code 265 CHAPTER 8 Interest Rate Exotics 267 8.1 CMS swaps 267 8.1.1 Code 269 8.2 Cancelable swaps 272 8.2.1 Code 272 8.2.2 Tree approximation 276 8.3 Target redemption note 281 8.3.1 Code 282 Bibliography 287 Index 289
£57.00
O'Reilly Media Just Spring
Book SynopsisThis example-driven introduction to the popular Spring Framework helps Java developers delve into its basic features, as well as advanced concepts such as containers. You'll learn how Spring makes Java Messaging Service easier to work with, and how its support for Hibernate helps you work with data persistence and retrieval.
£14.39
O'Reilly Media Using Databases with C
Book SynopsisC# offers developers power, but sometimes getting started with basic tasks - like getting information in and out of databases - is harder than it should be. Using Databases with C# provides a gentle introduction to a common but critical task, helping developers moving from other languages build a firm foundation.
£14.39
O'Reilly Safe C
Book SynopsisThis book contains discussion of some of the most typical mistakes made by us, programmers, in C++ code and also some recipes how to avoid each of these mistakes.
£16.99
O'Reilly Media Just Hibernate
Book SynopsisIf you're looking for a short, sweet, and simple introduction (or reintroduction) to Hibernate, this is the book you want. Through clear real-world examples, you'll learn Hibernate and object-relational mapping from the ground up, starting with the basics. Then you'll dive into the framework's moving parts to understand how they work in action.
£19.19
O'Reilly Media Lift Cookbook
Book SynopsisIf you need help building web applications with the Lift framework, this cookbook provides scores of concise, ready-to-use code solutions. You'll find recipes for everything from setting up a coding environment to creating REST web services and deploying your application to production.
£16.99
O'Reilly Media Learning Puppet 4
Book SynopsisThis practical guide shows you what Puppet does, how it works, and how it can provide significant value to your organization. Through hands-on tutorials, DevOps engineer Jo Rhett demonstrates how Puppet manages complex and distributed components to ensure service availability.
£31.99
O'Reilly Media C 6.0 Cookbook 4e
Book SynopsisCompletely updated for C# 6.0, the new edition of this bestseller offers more than 150 code recipes to common and not-so-common problems that C# programmers face every day. More than a third of the recipes have been rewritten to take advantage of new C# 6.0 features.
£35.19
O'Reilly Media Swift Development for the Apple Watch
Book SynopsisIf you're comfortable using OS X, Xcode, and iOS-and familiar with Swift-this concise book shows you the basics of building your own apps for this wrist-mounted computer with Apple's WatchKit framework.
£16.99
O'Reilly Media Introduction to JavaScript Object Notation
Book SynopsisThis concise guide helps busy IT professionals get up and running quickly with this popular data interchange format, and provides a deep understanding of how JSON works. Author Lindsay Bassett begins with an overview of JSON syntax, data types, formatting, and security concerns before exploring the many ways you can apply JSON today.
£19.19
O'Reilly Media Modern Java Recipes
Book SynopsisWith more than 70 detailed recipes, author Ken Kousen shows you how to use the newest features of Java to solve a wide range of problems.
£29.99
O'Reilly Media DevOps Tools for Java Developers
Book SynopsisThis practical guide helps you take advantage of microservices, serverless, and cloud native technologies using the latest DevOps techniques to simplify your build process and create hyperproductive teams.
£39.74
O'Reilly Media C Cookbook
Book SynopsisThis cookbook is packed full of recipes to help you solve issues for C# programming tasks you're likely to encounter. You'll learn tried-and-true techniques to help you achieve greater productivity and improve the quality of your code.
£39.74
O'Reilly Media Functional Programming with C
Book SynopsisWith concise, easy-to-read code that supports asynchronous, concurrent processing, aspects of functional programming have begun to appear in several traditionally object-oriented languages such as C# and Java. This practical book shows C# programmers how to use functional programming features without having to navigate an entirely new language.
£47.99
ISTE Ltd and John Wiley & Sons Inc Concurrent, Real-Time and Distributed Programming
Book SynopsisThis book provides an introduction to concurrent, real-time, distributed programming with Java object-oriented language support as an algorithm description tool. It describes in particular the mechanisms of synchronization (cooperative and competitive) and sharing of data (internal class, static variables) between threads in Java. He then discusses the use of Java for real-time applications. Consequently, a presentation of the RTSJ (Real Time Specification for Java) specification dedicated to the development of real-time applications in Java is also introduced in this book. Finally, a presentation of programming distributed in Java is presented in this book. We are particularly interested in communication using the TCP Sockets and high-level communication using Java Remote Method Invocation (RMI). The book also contains an annex which contains a practical set of application exercises in relation to the theme of the book. Knowledge of the Java language is a prerequisite for understanding the book.Table of Contents1. Introduction to threads in Java. 2. Threads Synchronization. 3. Real-time systems and real-time Java. 4. Distributed Programming in Java.
£125.06
ISTE Ltd and John Wiley & Sons Inc COBOL Software Modernization: From Principles to
Book SynopsisNowadays, billions of lines of code are in the COBOL programming language. This book is an analysis, a diagnosis, a strategy, a MDD method and a tool to transform legacy COBOL into modernized applications that comply with Internet computing, Service-Oriented Architecture (SOA) and the Cloud. It serves as a blueprint for those in charge of finding solutions to this considerable challenge.Table of ContentsACKNOWLEDGMENTS xi ACRONYMS xiii INTRODUCTION xvii CHAPTER 1. SOFTWARE MODERNIZATION: A BUSINESS VISION 1 1.1. Software-based business 1 1.2. Information-driven business 2 1.2.1. Adaptation to business 4 1.3. The case of tourism industry 7 1.4. IT progress acceleration 11 1.5. Legacy world 13 1.5.1. Exiting the legacy world 15 1.5.2. Legacy world professionals 16 1.6. Conclusions 18 CHAPTER 2. SOFTWARE MODERNIZATION: TECHNICAL ENVIRONMENT 21 2.1. Legacy system 21 2.2. Modernization 22 2.2.1. Replacement 24 2.2.2. Migration 25 2.2.3. Modernization versus migration 27 2.2.4. The superiority of white-box modernization 29 2.3. Software engineering principles underpinning modernization 31 2.3.1. Re-engineering in action 33 2.3.2. Re-engineering challenges 36 2.4. Conclusions 37 CHAPTER 3. STATUS OF COBOL LEGACY APPLICATIONS 39 3.1. OLTP versus batch programs 41 3.2. Mainframes 42 3.3. Data-driven design 43 3.4. COBOL degeneration principle 44 3.5. COBOL pitfalls 46 3.6. Middleware for COBOL 47 3.7. Moving COBOL OLTP/batch programs to Java 49 3.8. COBOL is not a friend of Java, and vice versa 51 3.9. Spaghetti code 52 3.9.1. Spaghetti code sample 53 3.9.2. Code comprehension 56 3.10. No longer COBOL? 57 3.11. Conclusions 58 CHAPTER 4. SERVICE-ORIENTED ARCHITECTURE (SOA) 59 4.1. Software architecture versus information system urbanization 59 4.2. Software architecture evolution 60 4.3. COBOL own style of software architecture 61 4.4. The one-way road to SOA 64 4.5. Characterization of SOA 66 4.5.1. Preliminary note 66 4.5.2. From objects to components and services 66 4.5.3. Type versus instance 67 4.5.4. Distribution concerns 68 4.5.5. Functional grouping 68 4.5.6. Granularity 69 4.5.7. Technology-centrism 70 4.5.8. Composition at design time (… is definitely modeling) 72 4.5.9. Composition at runtime 77 4.6. Conclusions 78 CHAPTER 5. SOA IN ACTION 79 5.1. Service as materialized component 81 5.2. Service as Internet resource 85 5.2.1. Pay-per-use service 87 5.2.2. Free service 89 5.2.3. Data feed service 90 5.3. High-end SOA 93 5.4. SOA challenges 95 5.5. The Cloud 97 5.5.1. COBOL in the Cloud 98 5.5.2. Computing is just resource consumption 99 5.5.3. Cloud computing is also resource consumption, but… 101 5.5.4. Everything as a service 102 5.5.5. SOA in the Cloud 104 5.5.6. The cloud counterparts 105 5.6. Conclusions 106 CHAPTER 6. MODEL-DRIVEN DEVELOPMENT (MDD) 109 6.1. Why MDD? 110 6.2. Models, intuitively 111 6.3. Models, formally 112 6.4. Models as computerized objects 113 6.5. Model-based productivity 118 6.6. Openness through standards 118 6.6.1. Model-Driven Architecture (MDA) 120 6.7. Models and people 121 6.8. Metamodeling 123 6.8.1. Metamodeling, put simply 123 6.9. Model transformation 125 6.10. Model transformation by example 125 6.11. From contemplative to executable models 126 6.12. Model execution in action 127 6.13. Toward Domain-Specific Modeling Languages (DSMLs) 129 6.14. Conclusions 132 CHAPTER 7. MODEL-DRIVEN SOFTWARE MODERNIZATION 135 7.1. Reverse and forward engineering are indivisible components of modernization 137 7.2. Architecture-Driven Modernization (ADM) 138 7.3. ASTM and KDM at a glance 142 7.4. Variations on ASTM 146 7.5. From ASTM to KDM 148 7.6. Variations on KDM 149 7.7. Automation 153 7.8. Conclusions 153 CHAPTER 8. SOFTWARE MODERNIZATION METHOD AND TOOL 155 8.1. BLU AGE overview 156 8.2. The toolbox 158 8.2.1. BLU AGE format required for forward engineering 160 8.2.2. Reverse tooling 162 8.3. BLU AGE as an ADM- and MDA-compliant tool 170 8.4. Modernization workflow 173 8.4.1. Initialization 173 8.4.2. Realization 182 8.4.3. Validation and deployment 187 8.5. Conclusions 188 CHAPTER 9. CASE STUDY 191 9.1. Case study presentation 192 9.2. Legacy modernization in action 195 9.2.1. Creating modernization project 196 9.2.2. Better dealing with the legacy material 196 9.2.3. Strategy for modernizing screens 202 9.2.4. Strategy for modernizing data items 203 9.2.5. Creating forward project 204 9.2.6. Entity extraction 207 9.2.7. From screens to pages and UI components 209 9.3. Annotations 209 9.4. Pattern definition 211 9.4.1. Pattern for simple statements 211 9.4.2. Patterns for operation calls 213 9.4.3. Patterns for operation calls with arguments 214 9.4. Database exchange modernization 216 9.5. Transmodeling 219 9.6. Transmodeling complex functionalities 226 9.6.1. Transmodeling the “custCost” program 228 9.6.2. Modernizing “Add a new reservation” 233 9.7. Application generation and testing 234 9.8. Conclusions 235 BIBLIOGRAPHY 239 INDEX 243
£125.06
Springer Das C++ Tutorial: Crash-Kurs und Repetitorium für
Book SynopsisDieses Tutorial hilft nicht nur Ingenieuren und Naturwissenschaftlern beim schnellen Einstieg und der Vertiefung in die Programmierung mit C++. Kommentierte Aufgaben, lebensnahe Beispiele und eine kompakte sowie systematische Struktur zeichnen dieses Buch aus.Table of ContentsGrundlagen.- Erste Schritte und strukturiertes Programmieren.- Prozedurales Programmieren.- Funktionen.- Algorithmen.- Modulares Programmieren.- Objektorientiertes Programmieren.- Klassen - Grundlagen.- Klassen - Vererbung und Polymorphie.- Generisches Programmieren: Templates.- Ausnahmebehandlungen.
£21.84
Springer Fachmedien Wiesbaden Java üben mit dem Plotter: Ein Überblick für
Book SynopsisDieses essential zeigt, wie man in Java-Anwendungen mit dem Plotter grafische Darstellungen erzeugen kann. Mit dem Plotter-Objekt – angelehnt an den Stiftplotter, der sich mit Steuerbefehlen über Papier bewegt – wird eine einfache Schnittstelle zur grafischen Programmierung angeboten. Bereits beim Einstieg in die Programmierung entstehen so erste grafische Darstellungen wie z.B. Funktionsverläufe und Simulationsergebnisse. Durch einfache Programmierbeispiele und Aufgaben wird der Umgang mit grundlegenden Konzepten wie Variablen, Kontrollstrukturen, Methoden und Klassen geübt. Table of ContentsJava Plotter – grafische Darstellung mit unterschiedlichen Linienarten und Farben.- Beispiele mit Quell-Code – LineStyle Demo, Spirale und mehr.- Übungsaufgaben zu Kurven, Simulationen mit Zufallszahlen und Feldern.
£11.77
Springer International Publishing AG Foundations of Programming Languages
Book SynopsisThis clearly written textbook provides an accessible introduction to the three programming paradigms of object-oriented/imperative, functional, and logic programming. Highly interactive in style, the text encourages learning through practice, offering test exercises for each topic covered. Review questions and programming projects are also presented, to help reinforce the concepts outside of the classroom. This updated and revised new edition features new material on the Java implementation of the JCoCo virtual machine.Topics and features: includes review questions and solved practice exercises, with supplementary code and support files available from an associated website; presents an historical perspective on the models of computation used in implementing the programming languages used today; provides the foundations for understanding how the syntax of a language is formally defined by a grammar; illustrates how programs execute at the level of assembly language, through the implementation of a stack-based Python virtual machine called JCoCo and a Python disassembler; introduces object-oriented languages through examples in Java, functional programming with Standard ML, and programming using the logic language Prolog; describes a case study involving the development of a compiler for the high level functional language Small, a robust subset of Standard ML.Undergraduate students of computer science will find this engaging textbook to be an invaluable guide to the skills and tools needed to become a better programmer. While the text assumes some background in an imperative language, and prior coverage of the basics of data structures, the hands-on approach and easy to follow writing style will enable the reader to quickly grasp the essentials of programming languages, frameworks, and architectures.Table of ContentsIntroductionSyntaxAssembly LanguageObject-Oriented ProgrammingFunctional ProgrammingCompiling Standard MLLogic ProgrammingStandard ML Type InferenceAppendix A: The JCoCo Virtual Machine Specification Appendix B: The Standard ML Basis Library
£51.15
Taylor & Francis Ltd Delphi Made Simple
a huge range and FREE tracked UK delivery on ALL orders.
£22.49
Taylor & Francis Inc Programming in C for Engineering and Science
Book SynopsisDeveloped from the author's many years of teaching computing courses, Programming in C++ for Engineering and Science guides students in designing programs to solve real problems encountered in engineering and scientific applications. These problems include radioactive decay, pollution indexes, digital circuits, differential equations, Internet addresses, data analysis, simulation, quality control, electrical networks, data encryption, beam deflection, and many other areas. To make it easier for novices to develop programs, the author uses an object-centered design approach that helps students identify the objects in a problem and the operations needed; develop an algorithm for processing; implement the objects, operations, and algorithm in a program; and test, correct, and revise the program. He also revisits topics in greater detail as the text progresses. By the end of the book, students will have a solid understanding of how C++ can be used to Trade Review"The book is lavishly illustrated with examples and exercises, which would make it both an ideal course companion and a book for private study. The author’s abilities to explain briefly the history of computing and to write an engaging text are to be commended. If you buy only one text on programming in C++, then this should be the one for you."—Carl M. O’Brien, International Statistical Review (2013), 81Table of ContentsIntroduction to Computing. Programming and Problem Solving—Software Engineering. Types in C++. Getting Started with Expressions. Control Structures. Functions and Libraries. Using Classes. More Selection Control Structures. More Repetition Control Structures. Functions in Depth. Files and Streams. Arrays and the vector Class Template. Multidimensional Arrays and Vectors. Building Classes. Pointers and Linked Structures. Data Structures. Answers to Test Yourself Questions. Appendices.
£90.24
Cambridge University Press UML by Example
a huge range and FREE tracked UK delivery on ALL orders.
£47.49
Cambridge University Press Information Systems Engineering
a huge range and FREE tracked UK delivery on ALL orders.
£48.44
Cambridge University Press Foundations of ComponentBased Systems
a huge range and FREE tracked UK delivery on ALL orders.
£46.54
Cambridge University Press Formal Methods for Distributed Processing
a huge range and FREE tracked UK delivery on ALL orders.
£45.59