![]() |
![]() |
Your cart is empty |
||
Books > Computing & IT > Computer programming > Object-oriented programming (OOP)
C++ is now established as one of the leading industry programming languages for object-oriented software development. Its advantages over other languages include speed and flexibility. It is used as the base for many commercial software products and for performance solutions to complex problems. Not often taught as the primary programming language, students are frequently expected to pick up the language for themselves. This book is an ideal student self-learning guide. As a step-by-step tutorial, this book teaches all language features and explains their practical usage. Intuitive examples are used that are neither too complex to distract, nor oversimplified. A key concept in C++ is programming with templates, which can help to program generic solutions - for example implementing polymorphism. Nicolai Josuttis teaches how to combine templates with object-oriented programming to produce the power of modern C++ development for high performance programs. It is a book that goes well beyond the basics. A supplementary website, including source code, can be found at www.josuttis.com/cppbook Features:
The Unified Modeling Language (UML) is an evolutionary general-purpose, tool-supported, and industry-standardized (OMG) modeling language for specifying, visualizing, constructing, and documenting the artifacts of a system-intensive process. "Guide to Applying the UML" offers a practical bridge between tutorials and reference works, demonstrating how all of the elements of the UML fit together holistically and cohesively. It closes the gap between the UML and process using a ¿roadmap¿ that addresses the key decision points and their relationships, providing a comprehensive framework. The focus is on rules of usage and principles of composition, style guidelines, practical real-world examples, and a tool-, process-, and technology-independent roadmap for effectively and successfully applying the UML. Topics and features: * Essential rules for using the UML and composing UML models are collated around important UML constructs *Presents a broad introduction to applying the UML, without having to prematurely adopt a particular process *Provides detailed examples, enabling readers to make informed decisions when modeling across the system development life cycle *Demonstrates how UML elements are related and how the UML supports traceability and scales for the life cycle process *Clear, well-developed diagrams simplify learning and applying core concepts and techniques With its focused, yet highly accessible approach, this guide strikes an integrated balance between UML rules and practices. It is an authoritative and comprehensive reference for software practitioners and professionals involved in the design, development, and management of UML-related software projects. About the author: Sinan Si Alhir is a highly respected consultant and has extensive information systems/technology experience, and breadth and depth in all phases of the system development life cycle. With experience in both high- and low-level project work, and broad and deep knowledge of technology and methodology, he endeavors to deliver quality solution-oriented results within various application domains using a multitude of technologies and approaches. He specializes in object-orientation, methodology/process, the Unified Modeling Language (UML), and various other disciplines and subjects, and focuses on empowering organizations to benefit from their application.
This volume presents a programming model, similar to object-oriented programming, that imposes a strict discipline on the form of the constituent objects and interactions among them. Concurrency considerations have been eliminated from the model itself and are introduced only during implementation, thereby freeing programmers from dealing with concurrency explicitly. Moreover, the resulting software designs are typically more modular and easier to analyze than the more traditional ones. Numerous examples illustrate various aspects of the model and reveal that a few simple, integrated features are adequate for designing complex applications. Topics and features: * Presents a simple, easy-to-understand multiprogramming model * Provides extensive development of the underlying theory * Emphasizes program composition, thereby making possible programming of large systems through modular designs * Eliminates explicit concurrency considerations during program design * Supplies efficient implementation schemes for distributed platforms. This book addresses the problem of developing complex distributed applications on wide-area networks, such as the Internet and World Wide Web, by using effective program design principles. Computer scientists, computer engineers, and software engineers will find the book an authoritative guide to large-scale multiprogramming.
Practical UML Statecharts in C/C++ Second Edition bridges the gap between high-level abstract concepts of the Unified Modeling Language (UML) and the actual programming aspects of modern hierarchical state machines (UML statecharts). The book describes a lightweight, open source, event-driven infrastructure, called QP that enables direct manual coding UML statecharts and concurrent event-driven applications in C or C++ without big tools. This book is presented in two parts. In Part I, you get a practical description of the relevant state machine concepts starting from traditional finite state automata to modern UML state machines followed by state machine coding techniques and state-machine design patterns, all illustrated with executable examples. In Part II, you find a detailed design study of a generic real-time framework indispensable for combining concurrent, event-driven state machines into robust applications. Part II begins with a clear explanation of the key event-driven programming concepts such as inversion of control ("Hollywood Principle"), blocking versus non-blocking code, run-to-completion (RTC) execution semantics, the importance of event queues, dealing with time, and the role of state machines to maintain the context from one event to the next. This background is designed to help software developers in making the transition from the traditional sequential to the modern event-driven programming, which can be one of the trickiest paradigm shifts. The lightweight QP event-driven infrastructure goes several steps beyond the traditional real-time operating system (RTOS). In the simplest configuration, QP runs on bare-metal microprocessor, microcontroller, or DSP completely replacing the RTOS. QP can also work with almost any OS/RTOS to take advantage of the existing device drivers, communication stacks, and other middleware. The accompanying website to this book contains complete open source code for QP, ports to popular processors and operating systems, including 80x86, ARM Cortex-M3, MSP430, and Linux, as well as all examples described in the book.
Object oriented programming is a way of thinking about problems. Smalltalk is one of the purest incarnations of an object-oriented programming language. Using a pedagogical approach, this book covers all aspects of object oriented programming: first through the study of various preexisting Smalltalk classes, their implementation and use; then through a detailed description of an implementation of an interactive Lindenmayer system and through implementation of a series of calculators. The author addresses such subjects as graphics programming, dependency mechanisms and hierarchical specialization. This book fills the gap for an in-depth self-study reference, permitting the reader to master all aspects of object-oriented programming through a large set of exercises with highly detailed resources.
Management of the Object-Oriented Development Process consists of a series of high-level discussions on technical and managerial issues related to object-oriented development. This book introduces object-oriented development techniques, including modeling languages, programming languages, reusable patterns and software development processes. It discusses the ongoing trends of object-oriented development, including emerging e-business development frameworks, executable UML and requirements engineering. There is also a focus on managerial issues such as project management and software evaluation, and how to manage the paradigm shift from structured to object-oriented development. Management of the Object-Oriented Development Process offers systems developers, project managers, information systems students and researchers technical skills as well as strategic insights on how to manage software projects, deploy object-oriented software development processes, understand the current trends and make the transition from structured to object-oriented techniques.
C# is the language of choice for learning how to program. It is a very well structured object-oriented language and avoids some of the problems of Java. An excellent free programming environment is available for C#, as well as a game programming framework. And (if necessary) moving from C# to C]+ is easy. Developing computer games is a perfect way to learn how to program in modern programming languages. This book teaches how to program in C# through the creation of computer games and without requiring any previous programming experience. Contrary to most programming books, Egges, Fokker and Overmars do not organize the presentation according to programming language constructs, but instead use the structure and elements of computer games as a framework. For instance, there are chapters on dealing with player input, game objects, game worlds, game states, levels, animation, physics, and intelligence. The reader will be guided through the development of four games showing the various aspects of game development. Starting with a simple shooting game, the authors move on to puzzle games consisting of multiple levels, and conclude the book by developing a full-fledged platform game with animation, game physics, and intelligent enemies. They show a number of commonly used techniques in games, such as drawing layers of sprites, rotating, scaling and animating sprites, showing a heads-up display, dealing with physics, handling interaction between game objects, and creating pleasing visual effects such as snow or glitter. At the same time, they provide a thorough introduction to C# and object-oriented programming, introducing step by step important aspects of programming in general, including many programming constructs and idioms, syntax diagrams, collections, and exception handling.The book is also designed to be used as a basis for a game-oriented programming course. For each part, there are concluding exercises and challenges, which are generally more complex programming endeavors. Lots of supplementary materials for organizing such a course are available on the accompanying web site http: //www.csharpprogramminggames.com, including installation instructions, solutions to the exercises, software installation instructions, game sprites and sounds.
by Luea Cardelli Ever since Strachey's work in the 1960's, polymorphism has been classified into the parametric and overloading varieties. Parametric polymorphism has been the subject of extensive study for over two decades. Overloading, on the other hand, has often been considered too ad hoc to deserve much attention even though it has been, in some form, an ingredient of virtually every programming lan guage (much more so than parametric polymorphism). With the introduction of object-oriented languages, and in particular with multiple-dispatch object-oriented languages, overloading has become less of a programming convenience and more of a fundamental feature in need of proper explanation. This book provides a compelling framework for the study of run-time over loading and of its interactions with subtyping and with parametric polymorphism. The book also describes applications to object-oriented programming. This new framework is motivated by the relatively recent spread of programming languages that are entirely based on run-time overloading; this fact probably explains why this subject was not investigated earlier. Once properly understood, overloading reveals itself relevant also to the study of older and more conventional (single dispatch) object-oriented languages, clarifying delicate issues of covariance and contravariance of method types, and of run-time type analysis. In the final chapters, a synthesis is made between parametric and overloading polymorphism."
Requirements Modeling and Coding attempts to bridge the gap between modeling and coding and serves the growing trend of agile development better than existing textbooks in the area. Instead of using toy tools to create modeling and coding examples, the author teaches IBM Rational Rhapsody as a modeling tool and Microsoft Visual C# as a programming tool. C# is the purest object-oriented programming language and the best tool for developing graphical user interfaces, while Rhapsody is a visual development environment that real software developers use to create real-time or embedded systems.This book serves as a text for a capstone course on Systems Analysis and Design in Information Systems programs. It conceptualizes business objects and functions, develops business models and software architectures, and enriches the models and the architectures by storyboarding use cases along with user interface designs.Instructor's resources are provided for free to instructors who adopt the book as textbook. Please send your request to [email protected].
Requirements Modeling and Coding attempts to bridge the gap between modeling and coding and serves the growing trend of agile development better than existing textbooks in the area. Instead of using toy tools to create modeling and coding examples, the author teaches IBM Rational Rhapsody as a modeling tool and Microsoft Visual C# as a programming tool. C# is the purest object-oriented programming language and the best tool for developing graphical user interfaces, while Rhapsody is a visual development environment that real software developers use to create real-time or embedded systems.This book serves as a text for a capstone course on Systems Analysis and Design in Information Systems programs. It conceptualizes business objects and functions, develops business models and software architectures, and enriches the models and the architectures by storyboarding use cases along with user interface designs.Instructor's resources are provided for free to instructors who adopt the book as textbook. Please send your request to [email protected].
This book is the follow-up of the Boost Volume I book and it has been written for software developers who use Boost C++ libraries to create flexible applications. We discuss approximately 20 advanced libraries that can be classified into the following major categories: Mathematics: special functions, statistical distributions, interval arithmetic and matrix algebra. Special data structures: date and time, circular buffer, UUID, dynamic bitsets, pool memory. TCP and UDP portable network programming using the software interface. Interprocess communication and shared memory programming models. Three chapters on graphs, graph algorithms and their implementation in Boost. The focus is hands-on and each library is discussed in detail and numerous working examples are given to get the reader up to speed as soon as possible. Each library is described in a step-by-step fashion and you can use the corresponding code as a basis for more advanced applications. These libraries are the ideal basis for new applications. We shall use them in Volume III of the current series when we discuss applications to engineering, science and computational finance. About the Authors Robert Demming is software designer, developer and trainer and he has been involved with software projects in the areas of optical technology, process control, CAD and order processing systems since 1993. He has a BSc degree in technical computerscience from Amsterdam Hogeschool. Daniel J. Duffy is founder of Datasim Education BV and has been working with C++ and its applications since 1989 and with software development since 1979. He is designer, algorithm builder and trainer. He has a PhD in numerical analysis from Trinity College, Dublin. One of the projects that he is involved in is applying the Boost libraries to computational finance."
Attacks against computer systems can cause considerable economic or physical damage. High-quality development of security-critical systems is difficult, mainly because of the conflict between development costs and verifiable correctness. JA1/4rjens presents the UML extension UMLsec for secure systems development. It uses the standard UML extension mechanisms, and can be employed to evaluate UML specifications for vulnerabilities using a formal semantics of a simplified fragment of UML. Established rules of security engineering can be encapsulated and hence made available even to developers who are not specialists in security. As one example, JA1/4rjens uncovers a flaw in the Common Electronic Purse Specification, and proposes and verifies a correction. With a clear separation between the general description of his approach and its mathematical foundations, the book is ideally suited both for researchers and graduate students in UML or formal methods and security, and for advanced professionals writing critical applications.
Machine Learning Engineering in Action lays out an approach to building deployable, maintainable production machine learning systems. You will adopt software development standards that deliver better code management, and make it easier to test, scale, and even reuse your machine learning code! You will learn how to plan and scope your project, manage cross-team logistics that avoid fatal communication failures, and design your code's architecture for improved resilience. You will even discover when not to use machine learning-and the alternative approaches that might be cheaper and more effective. When you're done working through this toolbox guide, you will be able to reliably deliver cost-effective solutions for organizations big and small alike. Following established processes and methodology maximizes the likelihood that your machine learning projects will survive and succeed for the long haul. By adopting standard, reproducible practices, your projects will be maintainable over time and easy for new team members to understand and adapt.
For courses in Object-Oriented Design, C++ Intermediate Programming, and Object-Oriented Programming. Written for software engineers "in the trenches," this text focuses on the technology-the principles, patterns, and process-that help software engineers effectively manage increasingly complex operating systems and applications. There is also a strong emphasis on the people behind the technology. This text will prepare students for a career in software engineering and serve as an on-going education for software engineers.
Good software design is essential for the success of your project, but designing software is hard to do. You need to have a deep understanding of the consequences of design decisions and a good overview of available design alternatives. With this book, experienced C++ developers will get a thorough, practical, and unparalleled overview of software design with this modern language. C++ trainer and consultant Klaus Iglberger explains how you can manage dependencies and abstractions, improve changeability and extensibility of software entities, and apply and implement modern design patterns to help you take advantage of today's possibilities. Design is the most essential aspect of a software project because it impacts the software's most important properties: maintainability, changeability, and extensibility. Learn how to evaluate your code with respect to software design Understand what software design is, including design goals such as changeability and extensibility Explore the advantages and disadvantages of each design approach Learn how design patterns help solve problems and express intent Choose the right form of a design pattern to gain most of its advantages
C++ is one of the most important and influential programming languages for application development. It supports the modular, object- oriented and generic programming models and its flexibility has been one of the main reasons why it has been so successful. With the emergence of the Boost Libraries (www.boost.org) we see that C++ is brought to a new level, namely a set of reusable and modular template libraries that C++ developers can use in their applications. This book is dedicated to a number of Boost libraries for higher-order functions, data types and data structures, libraries for text and string processing, multi-threading, random number generation and more. We also discuss how Boost and design patterns are used to promote the flexibility of code. Each library is described in a step-by-step manner. Numerous examples are given to show the functionality of each library. The full source code is freely available to purchasers of the book. Coverage Includes Understanding and using 30 major Boost libraries. Learn about higher-order functions, data structures, memory management, multi-threading and more. Using Boost in new and existing applications. Integrating Boost and the Gang-Of-Four design patterns. Ready-to-run projects for Visual Studio. Appendices and exercises."
The Unified Process methodology for object-oriented component-based development has taken the information technology community by storm. This first volume in a four-book series addresses the Inception Phase, in which developers focus on the initial requirements for a system, determining its scope and organizing the project. These articles from "Software Development" magazine have been written by industry luminaries.
Part of a new four-volume series presenting best practices using UP to develop object-oriented, component-based software, this book examines the second UP phase--elaboration--focusing on defining, validating, and baselining the architecture for a system. Illustrations throughout.
"Today's challenges" need "Today's solutions". The way this applies to real-word, it equally applies to programming world. To create solutions that meet today's expectations, one needs to use a modern language like Java. Learning Java can be challenging for anyone. This is where you would find this book immensely useful. It follows simple and easy narration style. It doesn't assume any programming background. It begins with the basics and steadily builds the pace so that the reader finds it easy to handle complex topics towards the end. Each chapter has been designed to create a deep and lasting impression on reader's mind. Object Oriented Programming has been covered in detail to give a strong foundation for Java programming. Well thought out & fully working example programs and carefully crafted exercises of this book, cover every aspect of Java programming. Some of the highlighting features of this book are: Data types & Control Instructions; Object Oriented Programming; Classes & Objects; Arrays & Strings; Interfaces; Packages; Inheritance & Polymorphism; Exception Handling; Effective I/O; and, Bitwise Operators.
Thorough and updated coverage on all the essential C++ concepts Aimed at providing you with a solid foundation in programming with C++, this new edition incorporates programming exercises with helpful self-check questions that reinforce the concepts discussed throughout the book. You'll benefit from the how-to sections that show you how concepts are applied and advanced materials are featured on the accompanying Web site when you're ready to take your programming skills to the next level.Shows you how to use C++ to your benefitIncludes advice for avoiding pitfallsIncorporates self-check questions and programming exercises to reinforce what you learnEncourages you to take your C++ programming skills to the next level with the advanced material featured on the accompanying Web site "C++ for Everyone, Second Edition," is the go-to guide for getting started with C++
Data-Oriented Programming teaches you to design and implement software using the data-oriented programming paradigm. In it, you'll learn author Yehonathan Sharvit's unique approach to DOP that he has developed over a decade of experience. Every chapter contains a new light bulb moment that will change the way you think about programming. As you read, you'll build a library management system using the DOP paradigm. You'll design data models for business entities, manipulate immutable data collections, and write unit tests for data-oriented systems. About the Technology Data-oriented programming is an exciting new paradigm that eliminates the usual complexity caused by combining data and code into objects and classes. In DOP, you maintain application data in persistent generic data structures separated from the program's code. You use general-purpose functions to manipulate the data without mutating it. This approach rids your applications of state-related bugs and makes your code much easier to understand and maintain.
"One of the great things about the book is the way the authors explain concepts very simply using analogies rather than programming examples--this has been very inspiring for a product I'm working on: an audio-only introduction to OOP and software development." --Bruce Eckel .,."I would expect that readers with a basic understanding of object-oriented programming and design would find this book useful, before approaching design patterns completely. "Design Patterns Explained "complements the existing design patterns texts and may perform a very useful role, fitting between introductory texts such as UML Distilled and the more advanced patterns books." --James Noble Leverage the quality and productivity benefits of patterns--without the complexity! "Design Patterns Explained, Second Edition" is the field's simplest, clearest, most practical introduction to patterns. Using dozens of updated Java examples, it shows programmers and architects exactly how to use patterns to design, develop, and deliver software far more effectively. You'll start with a complete overview of the fundamental principles of patterns, and the role of object-oriented analysis and design in contemporary software development. Then, using easy-to-understand sample code, Alan Shalloway and James Trott illuminate dozens of today's most useful patterns: their underlying concepts, advantages, tradeoffs, implementation techniques, and pitfalls to avoid. Many patterns are accompanied by UML diagrams. Building on their best-selling First Edition, Shalloway and Trott have thoroughly updated this book to reflect new software design trends, patterns, and implementation techniques. Reflecting extensive readerfeedback, they have deepened and clarified coverage throughout, and reorganized content for even greater ease of understanding. New and revamped coverage in this edition includes Better ways to start "thinking in patterns" How design patterns can facilitate agile development using eXtreme Programming and other methods How to use commonality and variability analysis to design application architectures The key role of testing into a patterns-driven development process How to use factories to instantiate and manage objects more effectively The Object-Pool Pattern--a new pattern not identified by the "Gang of Four" New study/practice questions at the end of every chapter Gentle yet thorough, this book assumes no patterns experience
whatsoever. It's the ideal "first book" on patterns, and a perfect
complement to Gamma's classic "Design Patterns," If you're a
programmer or architect who wants the clearest possible
understanding of design patterns--or if you've struggled to make
them work for you--read this book.
For a variety of reasons, the MATLAB(r)-Java interface was never fully documented. This is really quite unfortunate: Java is one of the most widely used programming languages, having many times the number of programmers and programming resources as MATLAB. Also unfortunate is the popular claim that while MATLAB is a fine programming platform for prototyping, it is not suitable for real-world, modern-looking applications. Undocumented Secrets of MATLAB(r)-Java Programming aims to correct this misconception. This book shows how using Java can significantly improve MATLAB program appearance and functionality, and that this can be done easily and even without any prior Java knowledge. Readers are led step-by-step from simple to complex customizations. Code snippets, screenshots, and numerous online references are provided to enable the utilization of this book as both a sequential tutorial and as a random-access reference suited for immediate use. Java-savvy readers will find it easy to tailor code samples for their particular needs; for Java newcomers, an introduction to Java and numerous online references are provided. This book demonstrates how
The fourth edition of Java Software Structuresembraces the enhancements of the latest version of Java, where all structures and collections are based on generics. The framework of the text walks the reader through three main areas: conceptualization, explanation, and implementation, allowing for a consistent and coherent introduction to data structures. Readers will learn how to develop high-quality software systems using well-designed collections and algorithms.
"An Introduction to Object-Oriented Programming with Java" provides an accessible and thorough introduction to the basics of programming in java. This much-anticipated revision continues its emphasis on object-oriented programming. Objects are used early so students begin thinking in an object-oriented way, then later Wu teaches students to define their own classes. In the third edition, the author has eliminated the author-written classes, so students get accustomed to using the standard java libraries. In the new update, the author has included the Scanner Class for input, a new feature of Java 1.5. Also new is the use of smaller complete code examples to enhance student learning. The larger sample development programs are continued in this edition, giving students an opportunity to walk incrementally walk through program design, learning the fundamentals of software engineering. The number and variety of examples makes this a student-friendly text that teaches by showing. Object diagrams continue to be an important element of Wu's approach. The consistent, visual approach assists students in understanding concepts. |
![]() ![]() You may like...
|