[Ebooks PDF] download C Programming De Gruyter STEM 1st Edition Yuan Dong full chapters

Download as pdf or txt
Download as pdf or txt
You are on page 1of 55

Download the Full Version of textbook for Fast Typing at textbookfull.

com

C Programming De Gruyter STEM 1st Edition Yuan


Dong

https://textbookfull.com/product/c-programming-de-gruyter-
stem-1st-edition-yuan-dong/

OR CLICK BUTTON

DOWNLOAD NOW

Download More textbook Instantly Today - Get Yours Now at textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

MATLAB Programming Mathematical Problem Solutions De


Gruyter STEM 1st Edition Dingyü Xue

https://textbookfull.com/product/matlab-programming-mathematical-
problem-solutions-de-gruyter-stem-1st-edition-dingyu-xue/

textboxfull.com

Water Resources Management Innovative and Green Solutions


De Gruyter STEM 2nd Edition Brears

https://textbookfull.com/product/water-resources-management-
innovative-and-green-solutions-de-gruyter-stem-2nd-edition-brears/

textboxfull.com

Corrosion Prevention Nanoscience Nanoengineering Materials


and Technologies de Gruyter Stem 1st Edition Berdimurodov
Elyor Tukhlievich
https://textbookfull.com/product/corrosion-prevention-nanoscience-
nanoengineering-materials-and-technologies-de-gruyter-stem-1st-
edition-berdimurodov-elyor-tukhlievich/
textboxfull.com

Differential Equation Solutions With MATLAB Fundamentals


and Numerical Implementations De Gruyter STEM Dingyu Xue

https://textbookfull.com/product/differential-equation-solutions-with-
matlab-fundamentals-and-numerical-implementations-de-gruyter-stem-
dingyu-xue/
textboxfull.com
Carbon for Micro and Nano Devices De Gruyter Textbook 1st
Edition Sharma

https://textbookfull.com/product/carbon-for-micro-and-nano-devices-de-
gruyter-textbook-1st-edition-sharma/

textboxfull.com

Relaxation in Optimization Theory and Variational Calculus


De Gruyter Nonlinear Analysis and Applications De Gruyter
Series in Nonlinear Analysis and Applications 4 2nd
Edition Roubíek
https://textbookfull.com/product/relaxation-in-optimization-theory-
and-variational-calculus-de-gruyter-nonlinear-analysis-and-
applications-de-gruyter-series-in-nonlinear-analysis-and-
applications-4-2nd-edition-roubiek/
textboxfull.com

Thermal Engineering: Engineering Thermodynamics and Heat


Transfer (De Gruyter Textbook) 1st Edition Qiu

https://textbookfull.com/product/thermal-engineering-engineering-
thermodynamics-and-heat-transfer-de-gruyter-textbook-1st-edition-qiu/

textboxfull.com

Semiconductor Quantum Light Sources: Fundamentals,


Technologies and Devices (De Gruyter Textbook) 1st Edition
Michler
https://textbookfull.com/product/semiconductor-quantum-light-sources-
fundamentals-technologies-and-devices-de-gruyter-textbook-1st-edition-
michler/
textboxfull.com

Pattern Recognition Introduction Features Classifiers and


Principles De Gruyter Textbook 2nd Edition Beyerer

https://textbookfull.com/product/pattern-recognition-introduction-
features-classifiers-and-principles-de-gruyter-textbook-2nd-edition-
beyerer/
textboxfull.com
Li Zheng, Yuan Dong, Fang Yang
C++ Programming
Also of Interest
Web Applications with Javascript or Java, vol. 1
G. Wagner, M. Diaconescu, 2017
ISBN 978-3-11-049993-3, e-ISBN (PDF) 978-3-11-049995-7,
e-ISBN (EPUB) 978-3-11-049724-3

Web Applications with Javascript or Java, vol. 2


G. Wagner, M. Diaconescu, 2017
ISBN 978-3-11-050024-0, e-ISBN (PDF) 978-3-11-050032-5,
e-ISBN (EPUB) 978-3-11-049756-4

Color Image Watermarking


Q. Su, 2016
ISBN 978-3-11-048757-2, e-ISBN (PDF) 978-3-11-048773-2,
e-ISBN (EPUB) 978-3-11-048763-3, Set-ISBN 978-3-11-048776-3

Trusted Computing
D. Feng, 2017
ISBN 978-3-11-047604-0, e-ISBN (PDF) 978-3-11-047759-7,
e-ISBN (EPUB) 978-3-11-047609-5, Set-ISBN 978-3-11-047760-3
Li Zheng, Yuan Dong, Fang Yang

C++ Programming

|
Authors
Dr. Li Zheng
Tsinghua University
Dept. of Computer Science and Technology
Haidian District, 30 Shuangqing Road
100084 Beijing, China

Dr. Yuan Dong


Tsinghua University
Dept. of Computer Science and Technology
Haidian District, 30 Shuangqing Road
100084 Beijing, China

Dr. Fang Yang


Tsinghua University, Dept. of Foreign Languages
Haidian District, 30 Shuangqing Road
100084 Beijing, China

ISBN 978-3-11-046943-1
e-ISBN (PDF) 978-3-11-047197-7
e-ISBN (EPUB) 978-3-11-047066-6

Library of Congress Control Number: 2018941441

Bibliographic information published by the Deutsche Nationalbibliothek


The Deutsche Nationalbibliothek lists this publication in the Deutsche Nationalbibliografie;
detailed bibliographic data are available on the Internet at http://dnb.dnb.de.

© 2019 Walter de Gruyter GmbH, Berlin/Boston


Cover image: tostphoto/iStock/thinkstock
Typesetting: le-tex publishing services GmbH, Leipzig
Printing and binding: CPI books GmbH, Leck

www.degruyter.com
Preface
This book draws on the author’s extensive teaching experience on C++ and takes its
current form after incorporating valuable advices from colleagues and students.

1. Background of Writing This Book

C++ is an object-oriented programming language, which is evolved from C. C++ has


two main characteristics: one is its full compatibility with C and the other is that it
supports object-oriented methods.
The object-oriented program design encapsulates both data and related opera-
tions to form an interdependent and indivisible whole – an object. By abstracting com-
mon features of objects of the same category, we can get a class. Most data in a class
can only be processed by the methods encapsulated in the class. A class communi-
cates with the outside world through a simple external interface, and objects com-
municate with each other through messages. In this way, we can have simple rela-
tionships among program modules, and module independency and data security can
be ensured. Meanwhile, through inheritance and polymorphism, codes can be well
reused, which facilitates both the development and maintenance of software.
Because of the outstanding qualities of object-oriented methods, they have now
become the major ways to develop large-scale software, and C++ is one of the most
widely used object-oriented programming languages.
C++ has long been considered hard to use, and is seldom used as an introduc-
tion language for teaching. Are C++ and object-oriented program design indeed hard
to learn? The answer is no. In fact, when C was first created, it was only used by a
few professional developers. However, along with the development of computer sci-
ence, computer technologies have permeated research and applications of different
subjects. Now C has been widely used by various engineers and technicians, and it
has also been used as the introduction programming language in many schools. C++
is fully compatible with C, although it provides a stricter and more secure grammar. In
this sense, C++ is primarily a better C.
C++ is an Object-Oriented Programming (OOP) language. OOP has once been con-
sidered a comparatively advanced technology. This is because before the theories of
Object-Oriented Analysis (OOA) and Object-Oriented Design (OOD) were developed, in
order to write a good object-oriented program, programmers would first learn to use
object-oriented methods to understand and describe problems. Now, since the work
of understanding problem domains and designing system components are done dur-
ing the phases of system analysis and system design, the work of OOP becomes much
easier – it is just to write every component of an OOD model with an object-oriented
programming language.

https://doi.org/10.1515/9783110471977-201
VI | Preface

The emergence of object-oriented methods is in fact a process where the program


design gets back to its roots. Essentially, software development aims to correctly un-
derstand problems that the software needs to handle and to accurately describe the
understandings. The fundamental principle that object-oriented methods emphasize
is to develop software directly facing the objective existence, and to apply the ways
of human thinking and human expressions to software development. Thus, software
development can return back to the real world from past methods, rules and skills that
are extravagantly specialized.
Thus, do we need to learn C before learning C++? No. Although C++ is evolved from
C, C++ itself is an integral programming language, and it has a completely different
design philosophy from C. Our learning course does not need to exactly follow the
development course of science and technology. Only by mastering the latest theories
and technologies quickly can we stand on the shoulders of giants.
Thus, we think that C++ can be taught as an introduction programming language.

2. Features of this book

This book is comprehensive, tries to explain problems in simple terms, and has abun-
dant complementary materials.
This book is for programmer beginners. Since the publication of the first edition
in 1999, the book has been used by different majors in many universities including
Tsinghua University, and has achieved good effects.
Using C++ as the introduction programming language for college students, this
book not only details the language itself, but also introduces data structures, algo-
rithms, object-oriented design ideas and programming, and the Unified Modeling Lan-
guage (UML). In each chapter of this book, we first introduce the related object-ori-
ented programming ideas and methods, and then expound the necessary grammar
through practical examples, explaining its meaning and usage primarily from the as-
pect of programming methodology. The purpose of this book is to make readers be
able not only to master the C++ language itself, but also to use computer languages
to describe simple practical problems and their solutions. However, to describe com-
plex problems, readers still have to learn other object-oriented courses such as object-
oriented software engineering.
As a book for programming beginners, this book aims at explaining complicated
subjects in simple terms.
Preface | VII

3. Content Abstract

Chapter 1: Introduction
From a development perspective, this chapter first introduces the history and the char-
acteristics of object-oriented programming language, as well as the origin and the pri-
mary basic concepts of object-oriented methods. Then it makes a brief introduction
on object-oriented software engineering. Finally, the chapter takes a look at how in-
formation is represented and stored in computers and the development procedure of
programs.

Chapter 2: Elementary C++ Programming


This chapter focuses on the basic knowledge of C++ programming. It first introduces
the history and the characteristics of the C++ language; then it discusses the basic
elements that construct a C++ statement – character sets, keywords, identifiers, op-
erators, etc. The chapter also introduces basic data types and user-defined data types
in C++, and three main control structures in algorithms: sequential, case, and loop
structures.

Chapter 3: Functions
This chapter focuses on the functions in C++. In object-oriented programming, func-
tion is the basic unit of module division, the basic abstract unit of problem-solving
processes, and also the abstract of functionalities. Using functions offers support for
code reuse. From an application perspective, this chapter mainly introduces the defi-
nitions and usages of various functions, especially the usages of system functions.

Chapter 4: Class and Object


This chapter first introduces the basic idea of object-oriented program design and
its main characteristics: abstraction, encapsulation, inheritance, and polymorphism.
Then, revolving around encapsulation, the chapter focuses on the core concept of
object-oriented methods – class, including the definition and the implementation of
class, and how to use class to solve practical problems. Finally, it briefly introduces
using Unified Modeling Language (UML) to describe the characteristics of class. Later
chapters will always use UML to describe the relationships between class and object.

Chapter 5: Data Sharing and Protecting


This chapter introduces the scope and visibility of identifiers, and the lifetime of vari-
ables and objects. We can see how to use local variables, global variables, data mem-
bers of classes, static members of classes, and friends to achieve data sharing and the
protection of shared data. Finally, the chapter introduces using multifile structures to
organize and write programs to solve complex problems.

Chapter 6: Arrays, Pointers, and Strings


This chapter focuses on arrays, pointers, and strings. Array and pointer are the most
commonly used compound (structure) data types. They are the primary means by
VIII | Preface

which we organize and represent data and objects, and are the useful tools for ma-
nipulating math operations. This chapter first introduces the basic concepts of arrays
and pointers, and discusses dynamic memory allocation. Then, revolving around the
organization issues of data and objects, the chapter focuses on how to use arrays
and pointers to link and coordinate data, functions, and objects. Finally, the chapter
introduces the concept of strings and two methods to process strings: using character
arrays and using the class string.

Chapter 7: Inheritance and Derivation


This chapter focuses on the inheritance characteristic of class. Revolving around the
derivation process, the chapter primarily discusses the access control issues of base
class members under different inheritance modes, as well as how to add the construc-
tor and destructor in a derived class. Then, the chapter discusses the issues of unique
identification and the access of class members in comparatively complex inheritance
relations. Finally, the chapter gives two instances of class inheritance – “Use Complete
Gaussian Pivoting Elimination Method to Solve Linear Equations” and “Personnel In-
formation Management Program for a Small Company.”

Chapter 8: Polymorphism
This chapter introduces another important characteristic of class – polymorphism.
Polymorphism refers to how a same message can result in different actions when re-
ceived by different kinds of objects. Polymorphism is a re-abstract of specific func-
tion members of a class. C++ supports many forms of polymorphism, and the main
forms include overloading (include function overloading and operator overloading)
and virtual functions, which are also the learning focus. Finally, the chapter gives two
instances of class polymorphism – “Variable-Step Trapezoid Integral Algorithm” and
“Improvement of Personnel Information Management Program for a Small Company.”

Chapter 9: Collections and the Organization of Collection Data


A collection refers to a set of data elements. Collections can be divided into two main
categories: linear collections and nonlinear collections. This chapter mainly intro-
duces some commonly used collection class templates.
The organization issues of collection data refer to the sorting and searching meth-
ods of the data elements in a collection. Sorting is also called classification or reorga-
nization. It is a process of making an unordered array ordered. Searching is the process
of finding specific data elements in an array by some specific method.

Chapter 10: Generic Programming and Standard Template Library


Generic Programming is writing programs as general as possible without loss of effi-
ciency. This chapter briefly introduces some concepts and terms that are involved in
the C++ Standard Template Library (STL), as well as the structure of STL and the usage
of its primary components. We focus on the basic applications of containers, iterators,
algorithms, and function objects, in order to give readers a conceptual understanding
of STL and generic programming.
Preface | IX

Chapter 11: I/O Stream Library and Input/Output


This chapter introduces the concept of stream, as well as the structure and usage of
the stream library. Like C, there is no Input/Output statement in C++. However, the
compiler of C++ has an object-oriented I/O software packet, which is the I/O stream
library.

Chapter 12: Exception Handling


This chapter focuses on the exception handling. Exception is a kind of program-de-
fined error. In C++, exception handling refers to a set of implementation mechanisms
that handles predicted errors in the runtime of programs. Try, throw and catch state-
ments are the mechanisms in C++ to implement exception handling. With the excep-
tion handling of C++, programs can deliver unexpected events to execution contexts
at higher levels, and thus better recover from these exceptions.

4. User’s Guide and Related Resources

The author assigns 32 class hours for teaching with this book, 32 class hours for ex-
periments, and 32 class hours for computer practice outside class. Thus, there are 96
class hours in and out of class, and each class hour has 45 minutes. We recommend
distributing the teaching hours as follows:
Chapter 1: 2 class hours; Chapter 2: 4 class hours; Chapter 3: 2 class hours; Chap-
ter 4: 4 class hours; Chapter 5: 2 class hours; Chapter 6: 4 class hours; Chapter 7: 4 class
hours; Chapter 8: 2 class hours; Chapter 9: 4 class hours; Chapter 10: 2 class hours;
Chapter 11: 1 class hours; Chapter 12: 1 class hour.
The readers can download the learning resources from the Tsinghua University
Press website.

5. Acknowledgement

Chapters 1–3, 9, 11, and 12 are written by Zheng Li; Chapters 4–8 are written by Dong
Yuan, Zheng Li and Zhang Ruifeng; and Chapter 10 are written by Zhang Ruifeng and
Zheng Li. Yang Fang took great efforts to rewrite this book in fluent English prose. Ad-
ditionally, Zhou Zhiwei, Dai Nike, Wang Jing, Shan Liang, Mai Haohui, Liu Yintao, Xu
Chen, Fu Shixing, Tian Rongpai, Meng Hongli, Meng Wei, Zhang Wenju, Yang Xing-
peng, and Wang Xuan participated in parts of the writing work.
Thank you to the readers for using this book; any criticisms or suggestions are
warmly welcomed. In your note, please specify your email address. The email address
of the author is: [email protected]
Contents
Preface | V

1 Introduction | 1
1.1 The Development of Computer Programming Languages | 1
1.1.1 Machine Language and Assembly Language | 1
1.1.2 High-level Language | 2
1.1.3 Object-oriented Language | 3
1.2 Object-oriented Method | 3
1.2.1 The Origin of Object-oriented Method | 3
1.2.2 Basic Concepts of Object-oriented | 5
1.3 Object-oriented Software Development | 7
1.3.1 Analysis | 7
1.3.2 Design | 7
1.3.3 Programming | 8
1.3.4 Test | 8
1.3.5 Maintenance | 8
1.4 Representation and Storage of Information | 9
1.4.1 Digital System of Computers | 9
1.4.2 Conversions among Numeral Systems | 11
1.4.3 Storage Units of Information | 14
1.4.4 Binary-coded Representation | 14
1.4.5 Fixed Point Number and Floating-Point Number | 19
1.4.6 The Number Range that can be Represented | 20
1.4.7 Representation of Non-numerical Information | 21
1.5 The Development Process of Programs | 21
1.5.1 Elementary Terms | 22
1.5.2 The Development Process | 22
1.6 Summary | 23
Exercises | 24

2 Elementary C++ Programming | 25


2.1 An Overview of C++ Language | 25
2.1.1 Origins of C++ | 25
2.1.2 Characteristics of C++ | 26
2.1.3 C++ Programming Examples | 26
2.1.4 Character Set | 28
2.1.5 Lexical Tokens | 28
2.2 Basic Data Types and Expressions | 30
2.2.1 Basic Data Types | 31
XII | Contents

2.2.2 Constants | 32
2.2.3 Variables | 34
2.2.4 Symbol Constants | 36
2.2.5 Operators and Expressions | 36
2.2.6 Statement | 46
2.3 Data Input and Output | 47
2.3.1 I/O Stream | 47
2.3.2 Predefined Input and Output Operator | 47
2.3.3 Simple I/O Format Control | 48
2.4 The Fundamental Control Structures of Algorithms | 49
2.4.1 Achieving Case Structure Using if Statement | 50
2.4.2 Multiple Selection Structure | 51
2.4.3 Loop Structure | 55
2.4.4 Nestings of Loop Structure and Case Structure | 61
2.4.5 Other Control Statements | 64
2.5 User-Defined Data Type | 65
2.5.1 typedef Declaration | 65
2.5.2 Enumeration Type – enum | 65
2.5.3 Structure | 67
2.5.4 Union | 70
2.6 Summary | 72
Exercises | 73

3 Functions | 79
3.1 Definition and Use of Function | 79
3.1.1 Definition of Function | 79
3.1.2 Function Calls | 80
3.1.3 Passing Parameters Between Functions | 95
3.2 Inline Functions | 99
3.3 Default Formal Parameters in Functions | 101
3.4 Function Overloading | 104
3.5 Using C++ System Functions | 106
3.6 Summary | 109
Exercises | 110

4 Class and Object | 113


4.1 Basic Features of Object-Oriented Design | 113
4.1.1 Abstraction | 113
4.1.2 Encapsulation | 114
4.1.3 Inheritance | 115
4.1.4 Polymorphism | 115
4.2 Class and Object | 116
Contents | XIII

4.2.1 Definition of Class | 117


4.2.2 Access Control to Class Members | 118
4.2.3 Member Function of Class | 120
4.2.4 Object | 121
4.2.5 Program Instance | 122
4.3 Constructor and Destructor | 124
4.3.1 Class Constructors | 124
4.3.2 The Copy Constructor | 127
4.3.3 Class Destructor | 131
4.3.4 Program Instance | 132
4.4 Combination of Classes | 134
4.4.1 Combination | 134
4.4.2 Forward Declaration | 138
4.5 UML | 141
4.5.1 Brief Introduction of UML | 141
4.5.2 UML Class Diagrams | 142
4.6 Program Instance – Personnel Information Management
Program | 149
4.6.1 Design of Class | 149
4.6.2 Source Code and Description | 150
4.6.3 Running Result and Analyses | 152
4.7 Summary | 153
Exercises | 153

5 Data Sharing and Protecting | 157


5.1 Scope and Visibility of Identifiers | 157
5.1.1 Scope | 157
5.1.2 Visibility | 159
5.2 Lifetime of Object | 160
5.2.1 Static Lifetime | 160
5.2.2 Dynamic Lifetime | 161
5.3 Static Members of Class | 164
5.3.1 Static Data Member | 164
5.3.2 Static Function Member | 167
5.4 Friend of Class | 170
5.4.1 Friend Function | 172
5.4.2 Friend Class | 174
5.5 Protection of Shared Data | 175
5.5.1 Constant Reference | 175
5.5.2 Constant Object | 176
5.5.3 Class Members Modified by const | 177
5.6 Multifile Structure and Compilation Preprocessing Directives | 180
XIV | Contents

5.6.1 General Organization Structure of C++ Program | 180


5.6.2 External Variable and External Function | 183
5.6.3 Standard C++ Library and Namespace | 184
5.6.4 Compilation Preprocessing | 185
5.7 Example – Personnel Information Management Program | 190
5.8 Summary | 194
Exercises | 194

6 Arrays, Pointers, and Strings | 197


6.1 Arrays | 197
6.1.1 Declaration and Use of Arrays | 198
6.1.2 Storage and Initialization of Arrays | 200
6.1.3 Using Arrays as Function Parameters | 203
6.1.4 Object Arrays | 204
6.1.5 Program Examples | 207
6.2 Pointers | 210
6.2.1 Access Method of Memory Space | 211
6.2.2 Declaration of Pointer Variables | 212
6.2.3 Operations Related to Addresses – ‘*’ and ‘&’ | 213
6.2.4 Assignment of Pointers | 214
6.2.5 Pointer Operations | 217
6.2.6 Using Pointers to Process Array Elements | 219
6.2.7 Pointer Arrays | 220
6.2.8 Using Pointers as Function Parameters | 223
6.2.9 Pointer-Type Functions | 225
6.2.10 Pointers that Point to Functions | 225
6.2.11 Object Pointers | 228
6.3 Dynamic Memory Allocation | 234
6.3.1 new Operation and delete Operation | 234
6.3.2 Dynamic Memory Allocation and Release Functions | 240
6.4 Deep Copy and Shallow Copy | 240
6.5 Strings | 245
6.5.1 Using Character Arrays to Store and Process Strings | 245
6.5.2 The string Class | 248
6.6 Program Example – Personnel Information Management
Program | 251
6.7 Summary | 255
Exercises | 256

7 Inheritance and Derivation | 259


7.1 Inheritance and Derivation of Class | 259
7.1.1 Instances of Inheritance and Derivation | 259
Contents | XV

7.1.2 Definition of Derived Class | 261


7.1.3 The Generation Process of Derived Classes | 263
7.2 Access Control | 266
7.2.1 Public Inheritance | 266
7.2.2 Private Inheritance | 269
7.2.3 Protected Inheritance | 271
7.3 Type Compatible Rule | 274
7.4 Constructor and Destructor of Derived Class | 277
7.4.1 Constructor | 277
7.4.2 Copy Constructor | 281
7.4.3 Destructor | 281
7.5 Identification and Access of Derived-Class Member | 284
7.5.1 Scope Resolution | 284
7.5.2 Virtual Base Class | 290
7.5.3 Constructors of Virtual Base Class and Derived Class | 294
7.6 Program Example: Solving Linear Equations using Gaussian Elimination
Method | 295
7.6.1 Fundamental Principles | 296
7.6.2 Analysis of the Program Design | 297
7.6.3 Source Code and Explanation | 297
7.6.4 Execution Result and Analysis | 304
7.7 Program Example: Personnel Information Management Program | 305
7.7.1 Problem Description | 305
7.7.2 Class Design | 305
7.7.3 Source Code and Explanation | 306
7.7.4 Execution Result and Analysis | 311
7.8 Summary | 312
Exercises | 314

8 Polymorphism | 315
8.1 An Overview of Polymorphism | 315
8.1.1 Types of Polymorphism | 315
8.1.2 Implementation of Polymorphism | 316
8.2 Operator Overload | 316
8.2.1 Rules of Operator Overload | 317
8.2.2 Operator Overloaded as Member Function | 318
8.2.3 Operator Overloaded as Friend Function | 323
8.3 Virtual Function | 326
8.3.1 Ordinary Virtual Function Member | 327
8.3.2 Virtual Destructor | 330
8.4 Abstract Classes | 332
8.4.1 Pure Virtual Functions | 332
XVI | Contents

8.4.2 Abstract Classes | 333


8.5 Program Instance: Variable Stepwise Trapezoid Method to Calculate
Functional Definite Integral | 335
8.5.1 Basic Principle | 335
8.5.2 Analysis of Program Design | 337
8.5.3 Source Code and Explanation | 338
8.5.4 Execution Result and Analysis | 341
8.6 Program Instance: Improvement on Staff Information Management
System for a Small Corporation | 341
8.7 Summary | 348
Exercises | 349

9 Collections and Their Organization | 351


9.1 Function Templates and Class Templates | 352
9.1.1 Function Template | 352
9.1.2 Class Template | 355
9.2 Linear Collection | 359
9.2.1 Definition of Linear Collection | 359
9.2.2 Direct Accessible Linear Collection – Array | 362
9.2.3 Sequential Access Collection – Linked List | 372
9.2.4 Stack | 378
9.2.5 Queues | 385
9.3 Organizing Data in Linear Collections | 389
9.3.1 Insertion Sort | 389
9.3.2 Selection Sort | 390
9.3.3 Exchange Sort | 392
9.3.4 Sequential Search | 394
9.3.5 Binary Search | 394
9.4 Application – Improving the HR Management Program of a Small
Company | 396
9.5 Summary | 397
Exercises | 398

10 Generic Programming and the Standard Template Library | 401


10.1 Generic Programming | 401
10.1.1 Introduction | 401
10.1.2 Namespace | 402
10.1.3 Differences of Naming Conventions Between C/C++ | 404
10.1.4 Concepts of STL | 404
10.1.5 Containers | 404
10.1.6 Adapters | 405
10.1.7 Iterators | 405
Contents | XVII

10.1.8 Algorithms | 405


10.1.9 Interfaces of Containers | 405
10.2 Containers in STL | 406
10.2.1 Sequential Containers | 407
10.2.2 Adapters of Containers | 416
10.3 Iterators | 418
10.3.1 Types of Iterators | 419
10.3.2 Auxiliary Functions in Iterators | 421
10.4 Algorithms in STL | 422
10.4.1 Using the Algorithms | 423
10.4.2 Nonmutating Sequence Algorithms | 424
10.4.3 Mutating Sequence Algorithms | 427
10.4.4 Sorting Related Algorithms | 431
10.4.5 Numerical Algorithms | 436
10.5 Function Objects | 437
10.6 Application – Improving the HR Management Program of a Small
Company | 440
10.7 Summary | 442
Exercises | 442

11 The I/O Stream Library and Input/Output | 445


11.1 I/O Stream’s Concept and the Structure of a Stream Library | 445
11.2 Output Stream | 447
11.2.1 Construct Output Object | 448
11.2.2 The Use of Inserter and Manipulator | 449
11.2.3 Output File Stream Member Function | 454
11.2.4 Binary Output File | 457
11.3 Input Stream | 458
11.3.1 Construct Input Stream Object | 458
11.3.2 Extraction Operator | 458
11.3.3 Input Stream Manipulator | 459
11.3.4 Input Stream Member Function | 459
11.4 Input/output Stream | 463
11.5 Example-improve Employee Information Management System | 464
11.6 Summary | 466
Exercises | 467

12 Exception Handling | 469


12.1 Basic Concepts of Exception Handling | 469
12.2 The Implementation of Exception Handling in C++ | 470
12.2.1 The Syntax of Exception Handling | 470
12.2.2 Exception Interface Declaration | 473
XVIII | Contents

12.3 Destruction and Construction in Exception Handling | 473


12.4 Exception Handling of Standard Library | 476
12.5 Program Example Improvement to Personal Information Administration
Program in a Small Company | 478
12.6 Summary | 480
Exercises | 480

Index | 481
1 Introduction
This chapter briefly introduces the history and characteristics of object-oriented pro-
gramming languages, the origin of the object-oriented method and its basic concepts,
and the definition of object-oriented software engineering. Additionally, we will intro-
duce how information is represented and stored in a computer and the development
process of a program.

1.1 The Development of Computer Programming Languages

A language is a system with a set of grammatical and morphological rules. Language


is a tool for thinking, and thoughts are expressed by languages. A computer program-
ming language is a language that can be recognized by computers. It describes solu-
tions to problems, which can be read and executed by computers.

1.1.1 Machine Language and Assembly Language

Since the birth of the first digital computer in the world – ENIAC, in February 1946,
computer science has developed rapidly in the past 50 years. Computers and their
applications have penetrated into various areas of society, effectively promoting the
development of the whole information society, wherein the computer has become an
essential tool.
A computer system consists of software and hardware. It is not only the strong
hardware but also the software system that makes a computer system so powerful.
The software system consists of all the programs a computer needs for running, as
well as the relevant documents. The work of a computer is controlled by programs,
and a computer can do nothing without a program. A program is a set of instructions.
Software engineers translate their solutions to problems and their procedures into a
series of instructions, which make up programs, and input these programs into the
computer storage system. The computer executes the instruction sequence to complete
the scheduled task.
The so-called instructions are commands that can be recognized by comput-
ers. We know that every ethnic group has rich languages for expression, communica-
tion, and recordation, while these languages are difficult for a computer to recognize.
The only instruction types that a computer can recognize are simple combinations of
0s and 1s. The set of instructions that can be recognized by the hardware system of a
computer is called the instruction system.
All binary instructions that can be recognized by the hardware system con-
stitute the machine language. Undoubtedly, though machine language is easy for

https://doi.org/10.1515/9783110471977-001
2 | 1 Introduction

a computer to recognize, it is too obscure for human beings to understand, let alone
to remember. However, in the early years of computers software engineers could only
use the machine language to write programs. At that time, there was a huge gap be-
tween natural human language and the computer programming language. It took great
difficulty and long cycles for software developing, while the developed software had
simple functions and unfriendly interfaces.
Before long, assembly language was developed to map the machine instruc-
tions onto some mnemonic symbols, such as ADD and SUB. The gap between the
programming language and human language is somewhat reduced, while the machine
language is still far from the human mind. Since machine language is pretty weak in
abstraction, programmers still need to consider a great many machinery details.
Nevertheless, it is still a big progress from the machine language to assembly lan-
guage. It means that it is not necessary for human beings and the computer hardware
system to share a same language. Programmers can use languages that suit man’s ways
of thinking, while the computer hardware system only needs to recognize machine
instructions. Then, how to realize the communication between the two languages?
A translation tool (software) is needed. The translator for an assembly language is
called an assembler, which transforms the mnemonic symbols written by program-
mers into machine instructions, and then the computer can recognize and execute
these instructions.

1.1.2 High-level Language

The emergence of high-level language is a great progress in programming language.


It masks the details of a machine, and raises the level of abstraction. In programs
we can name variables with specific meanings and use statements that are easier to
understand. Through this we can correlate the specific objects a program describes
when we write the program.
Structured programming language that emerged in the late 1960s further en-
hanced the language level. Concepts such as structured data, structured statements,
data abstraction, and procedure abstraction made programs more easily reflect the
structures and logic meanings of objects. This further reduced the gap between the
programming language and natural language, while their differences remained non-
negligible. The main problem was the separation between data and operation in a
program, making it difficult to create program components that could closely corre-
spond to objects in the real world.
Today there are several widely-used high-level programming languages, including
Fortran, BASIC, Pascal, C, etc. The C++ programming language this book introduces
is also a high-level programming language, although it has some fundamental differ-
ences from other procedure-oriented languages.
1.2 Object-oriented Method | 3

1.1.3 Object-oriented Language

The fundamental difference between an object-oriented language and formerly used


programming languages is that it is designed to describe real objects in the world and
their relationships more directly.
We develop software to solve problems. The business scope a problem involves is
called the problem domain. Object-oriented programming language treats things in
the real world as objects with attributes and behaviors (or services), and then classi-
fies objects with common attributes (static features) and behaviors (dynamic features)
through abstraction, calling them a class. By using class inheritance and polymor-
phism, we can easily realize code reuse, significantly shorten the software develop-
ment cycle, and make the software style unified. Therefore, an object-oriented pro-
gramming language can make a program directly reflect the real problem domain, and
software developers can thus use normal ways of human thinking to develop software.
Object-oriented programming language has experienced a long stage of develop-
ment. For instance, LISP-family’s object-oriented language, Simula67, Smalltalk, CLU,
Ada, and Modula-2 are all programming languages that more or less use the concept of
“object oriented”, among which Smalltalk is the first “true” object-oriented program-
ming language.
However, the most widely used object-oriented (OO) programming language is
C++, which is extended from C. Since C++ is compatible with C and C is already fa-
miliar to most programmers, C++ has naturally become the most widely used OO pro-
gramming language.

1.2 Object-oriented Method

A programming language is a tool for writing programs, so the progress of a program-


ming language reflects the progress of program design methods. Here we will first in-
troduce the basic concepts of the object-oriented method. We believe that after read-
ing this book, you may have a sound and complete comprehension of object-oriented
method.

1.2.1 The Origin of Object-oriented Method

Before the emergence of object-oriented method, we had been using a procedure-ori-


ented design method. In the early days computers were tools for mathematic compu-
tations, such as computing a ballistic trajectory. To complete the computation, people
had to design a method, or procedure. Therefore, the main work for software design
was to figure out a procedure to solve the problem.

Brought to you by | Newcastle University


Authenticated
Download Date | 3/28/19 9:22 PM
4 | 1 Introduction

Along with the rapid development of hardware systems, computers have become
more and more powerful and widely used, not only limited to mathematic computa-
tions. Because of the increasing complexity of the problems we want to solve, pro-
grams have become much larger and more complex. The structured design method
that emerged in the 1960s provided an effective way for procedure-oriented program-
ming to solve complex problems. As a result, from the 1970s to the 1980s, structured
programming was adopted by programmers in every field of software design. The main
idea of structured programming is top-down and stepwise refinement. Its program
structure is divided into several basic modules by different functionalities, and these
modules form a tree structure. The relationships among the modules are kept as simple
as possible and the function of each module is relatively independent. Each module
consists of three basic structures – sequential structure, branch structure, and loop
structure. The concrete way to realize modularization is to use subroutines. Due to
the use of modular decomposition, function abstraction, and top-down and stepwise
refinement, structured programming can effectively decompose a complex program
system into several subtasks that are easier to control and handle, so as to facilitate
development and maintenance.
Whatever advantages structured programming may have, it is still a kind of pro-
cedure-oriented design method, which separates data and its processing operations.
When a data structure changes, all relevant processing procedures need correspond-
ing modifications. Any new method for an old problem may entail extra costs, making
the program hard to reuse. Besides, due to the use of GUI (Graphical User Interface),
software has become easier to use while being more difficult to develop. Good software
should be responsive to any user operation, rather than ask its users to follow some
specific steps. For example, we are all familiar with the word processor. A good word
processor should be able to be used easily and at liberty, and fixed operation orders
should never appear in a software specification. Therefore, it is very difficult to use
procedures to describe and implement the functions of the software. If we continue
to take the procedure-oriented method, both development and maintenance will be
difficult.
Then, what is object-oriented method? First, it puts together the data and its op-
eration as an interdependent and inseparable whole, which is called an object. Sec-
ondly, it abstracts common characters from objects of the same kind and groups those
objects into a class. Most of the data in a class can only be processed by the methods
of this class. A class communicates with the outside world through a simple external
interface, while objects communicate with messages. Through this way, the relation-
ships among program modules become much simpler, and the independence of mod-
ules and data safety can be better guaranteed. Besides, class inheritance and polymor-
phism, which will be introduced in the following chapters, may further improve code
reusability and facilitate the development and maintenance of software.
There are so many advantages in the object-oriented method, and yet one may
wonder whether it is easy for beginners to understand and master. The answer is yes.

Brought to you by | Newcastle University


Authenticated
Download Date | 3/28/19 9:22 PM
1.2 Object-oriented Method | 5

The emergence of object-oriented method is in fact a process of the development of


programming design method returning to nature. The goal of software development,
in essence, is to get a proper understanding of the problem domain it needs to solve,
and to correctly describe the understanding. The fundamental principle the object-
oriented method emphasizes is to develop software directly according to existing ob-
jects, and to bring human ways of thinking and expressing into software development.
Through this, we can turn software development from those over-specialized methods,
rules, and techniques back to human ways of thinking.

1.2.2 Basic Concepts of Object-oriented

Now we will introduce some basic concepts in the object-oriented method. We can-
not expect to understand all these concepts through only a few such statements. The
following chapters of this book will help us to get a better understanding of these con-
cepts to finally achieve proficiency.

1. Object
Generally speaking, objects are things that really exist. They can be either material
(like a car) or immaterial (like a plan). An object is an independent unit that makes
up the world. It has static features (can be described by certain data) and dynamic
features (the behaviors an object presents or its functionalities).
The Object in OO (object-oriented) method is an entity system used to describe ob-
jective things. It is an elementary unit for constructing a system. An object consists of
a group of attributes and a group of behaviors. Attributes describe the static features
of an object while behaviors are the operation sequences that describe an object’s dy-
namic features.

2. Class
People tend to sum up their understanding of the world and put them into categories.
The principle for such classification is abstraction, which means ignoring minor
issues and only focusing on essential characteristics that relate to our current goals.
In this way, we can find out the shared characteristics and sort out those things with
common characteristics and put them into a class. Then we can have an abstract con-
cept, such as a stone, tree, car, or house, which are all concepts that people abstracted
from humanity’s long-term life experiences in production and practice.
A “class” in the OO method is a set of objects with the same attributes and behav-
iors. It provides abstract descriptions for all objects of the class and is mainly com-
posed of two parts: attribute and behavior. The relationship between class and object
is similar to that between a mold and cast. An object of a class is called an instance of
that class.

Brought to you by | Newcastle University


Authenticated
Download Date | 3/28/19 9:22 PM
6 | 1 Introduction

3. Encapsulation
Encapsulation is an important principle in the OO method. It means assembling the
attributes and services of an object into an independent unit and concealing the inter-
nal details of the object as much as possible. Here encapsulation has two meanings.
The first meaning is assembling all the attributes and services of an object into an in-
separable entity; the second meaning, also called “information hiding”, is creating a
boundary (or barrier) to hide internal details and making the object interact with the
outside world only through limited external interfaces.

4. Inheritance
Inheritance is one of the most important factors that make the OO method improve
software development efficiency. If objects of a particular class possess all attributes
and services of its common class, we call this an inheritance of a particular class from
the common class.
The practical significance of inheritance is that it simplifies people’s understand-
ings and descriptions of objective things. For example, once we know all the features
of “ship”, we consider “passenger ship” and know that it is a kind of “ship”. We may
conclude that “passenger ship” has all the features of “ship”, so we only need to focus
on those features specialized in “passenger ship”.
Inheritance has significant importance for software reuse. A particular class in-
heriting a common class is in itself a kind of software reuse. In addition, if we put a
developed class in the component library as a component, we can directly use it or
inherit it when trying to develop a new system.

5. Polymorphism
Polymorphism refers to how the attributes or behaviors defined in a common class can
have different data types or behaviors after they are inherited by a particular class. This
makes the same attribute or behavior possess different semantics in the common class
and in various particular classes.
For example, we can define a common class of the “geometric figure”. The class
has a behavior of “draw” but with no specific meaning, that is, we don’t know to draw
the figure in execution (because we don’t know what the figure is). Next, we can define
some particular classes of “geometric figure”, such as “ellipse” or “polygon”. Since
both of them inherit the common class “geometric figure”, they are within the behavior
of “draw”. Thereafter, we can redefine “draw” according to the particular class and
make it possible to draw ellipse and polygon accordingly. Furthermore, we can define a
particular class “rectangle” that inherits from “polygon” and implements the function
of drawing a rectangle in “draw”. That is what polymorphism is in the OO method.

Brought to you by | Newcastle University


Authenticated
Download Date | 3/28/19 9:22 PM
1.3 Object-oriented Software Development | 7

1.3 Object-oriented Software Development

In the whole process of software development, programming is a relatively small part.


The pacing factor of software development comes from raising problems in early stages
but not resolving the problems in later stages. Once we recognize, understand, and
express the essence of the problem correctly, we can design and program to solve it.
The problems we want to solve in early days are simple, so it is not very difficult to
recognize the problem and solve it by programming. With the extension of the appli-
cation fields of computers, the problems we want to solve become more complex, and
the scale and complexity of software systems increase to an unprecedented level. This
leads to the situation that the complexity of the software and the bugs in it reach an
extent that programmers cannot control, known as the “software crisis” in the 1960s,
which speeds up the emergence and development of software engineering.
To learn object-oriented programming we should first know the overall process
of software development and maintenance. So, what is object-oriented software en-
gineering? It is the application of the object-oriented method in the field of software
engineering, including object-oriented analysis (OOA), object-oriented design (OOD),
object-oriented programming (OOP), object-oriented test (OOT), and object-oriented
software maintenance (OOSM), etc.

1.3.1 Analysis

By describing a problem, we can build up a model of a real situation to illustrate the


important features of the system. To understand the problem, system analysts should
work with their clients. In the analysis stage, we should abstract what the system
should do precisely, rather than care about implementation.
Object-oriented system analysis builds objects in a model directly with the objec-
tive existence in the problem domain. Thus, separate objects as well as their relation-
ships can be well preserved with no transformation or any recombination that violates
the original boundary, so as to reflect the objective existence effectively.

1.3.2 Design

The design stage aims at a concrete implementation of the system and uses the OO
method. It includes two different jobs: one is to move the OOA model directly into OOD
as its component; the other is to add some related work according to the factors of
the concrete implementation, such as data storage, task management, and human-
computer interface.

Brought to you by | Newcastle University


Authenticated
Download Date | 3/28/19 9:22 PM
8 | 1 Introduction

1.3.3 Programming

Programming is a very important stage in the final implementation of object-oriented


software development. Before the emergence of OOA and OOD theories, programmers
should learn to understand the problem domain with the object-oriented method in
order to write a good object-oriented program. Therefore, OOP is considered an ad-
vanced technique. Nowadays OOP is much easier, since the work of understanding the
problem domain and designing system components have already been accomplished
in the stage of OOA and OOD. The work left for OOP is to write down every component
in the OOD model using an OO programming language.
Nevertheless, we still emphasize the basic thinking process of object-oriented pro-
gram design, rather than only mastering the programming skills. So, even though this
book is for beginners of programming, and mainly concerns the C++ programming
language and object-oriented programming approach, we still take some space to in-
troduce design methods through examples.

1.3.4 Test

The task for the test is to detect bugs in the software. Any software product should be
strictly tested before being released. Continually using the concepts and principles of
object-oriented in the test of OO software, and deeming the class as the basic test unit,
can detect bugs more accurately and furthermore improve the test efficiency.

1.3.5 Maintenance

No matter how strict the tests are, which the software may undergo, it may still have
bugs. Therefore, maintenance is necessary in software development.
In the software developed by the OO method, the problem domain is consistent
with the program, and the presentations in every stage of the software engineering are
consistent, so that it is easier for the maintainer to understand the software. Whether
we may discover a bug in the program or demands may change; tracing back to the
program will not be very hard. Besides, impacts due to changes in other objects have
been reduced because of the encapsulation of the object. Thus, software maintenance
efficiency can be highly increased through the object-oriented method.
As readers may see, examples in this book are very simple, and they always come
with clear descriptions of the problems encountered. Thus, it is not easy for the readers
to understand the effect of software engineering. However, we still recommend design-
ing the object before programming. This book is mainly for programming methods, yet
we suggest that readers learn OO software engineering after you have mastered C++
programming language.

Brought to you by | Newcastle University


Authenticated
Download Date | 3/28/19 9:22 PM
1.4 Representation and Storage of Information | 9

1.4 Representation and Storage of Information

Computers can process data information, although it is conducted by control informa-


tion. So the information in computers can be classified into two categories:

instruction
control information
control word
information fixed point
numerical information
floating point
data information
character data
nonnumeric information
logical data

This chapter focuses on data information. Please refer to related books on hardware
for details on control information.

1.4.1 Digital System of Computers

People are familiar with the decimal numeral system. However, almost all comput-
ers use the binary system. Computers cannot transfer, store, or process data until it is
coded into binary digits. When programming, we usually transfer binary system into
the octal system or hexadecimal system. A feature common to all these numeral sys-
tems is that they are positional numeral systems.
Generally speaking, if there are R basic symbols in a numeral system, we call it an
R-based numeral system. R is the “base” of the numeral system and each position in
the numeral system has a value called “weight”.
The coding of positional numeral system complies with the “standing-on-R” rule,
which means their weight is the power based on R. Any number can be expanded to
a polynomial according to the weight. For example, a decimal number 256.47 can be
expanded into the polynomial as follows:

256.47 = 2 × 102 + 5 × 101 + 6 × 100 + 4 × 10−1 + 7 × 10−2

For any R-based number x, its value V(x) can be presented as:
n−1 m
V(x) = ∑ x i R i + ∑ x i R i
⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟
i=0 ⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟
i=−1
Integral Decimal

Here m and n are integers, and R i is the weight in Position i. X0 and X−1 are separated
by a decimal point. Usually, X i should satisfy the following condition:

0 ≤ Xi < R

Brought to you by | Newcastle University


Authenticated
Download Date | 3/28/19 9:22 PM
Discovering Diverse Content Through
Random Scribd Documents
megérkezve, a színpadon – hogy annál nagyobb legyen a kísérteties
hangulat – bár az őrültségét csak fölötte hézagosan magyarázza
meg, hogy ő is elveszítette a maga kék küraszirját, akit kétszer látott:
először a bálteremben s másodszor, amikor a kék küraszirok a
halálba indulásuk előtt utóljára dáridóztak Bécsben; se az, hogy
azóta egy kissé megfürdött a posványban… És nincs mit szólni a
gyakornokról sem, aki ezt a másik leányt még a kék küraszirok
haláltánca előtt elhagyta a Moser-leányért és az egész darabon át
nem tudja megérteni, hogy ennek pedig ő nem kell, főképpen azért
nem, mert a betegápolásba idejekorán belefáradt nő nem kívánkozik
az erdő magánosságába. A néző se tudja megérteni, hogy ez a
gyakornok hogyan és miért került bele ebbe a darabba.
A fejlemények is csak valami hosszú epilógnak a minimumig
lemérsékelt hatását tehetik a nézőre. Hogy a kék kürasztirok mind
egy szálig áldozatául estek érthetetlen kiküldetésüknek és csodás
véletlenségből csak egy ember menekült meg közülök, éppen az, aki
– élnivágyásból – egyedül debachált a rendelés ellen, de ez az egy
is, szíves meglepetésül a nézőnek, modernül elmés
következetlenséggel, agyonlőtte magát, hogy doktor Schindler-
Mirákoló szamárnak deklarálhassa – már csak tudomásul szolgál,
mint a jegyzőkönyvekben szokás mondani. Hasonlóképpen: hogy
egy darab egyetlen maradi alakja, Richterné, Kata-Ophéliának az
anyja, továbbra is mindennap eljár a templomba.
A nézőt most már csak a Moser-leány sorsa érdekelheti. Tehát: a
kék küraszirja visszautasította azt a kivánságát, hogy haljanak meg
együtt; a katona elment a csatába, hogy büntetésül és példaadás
okából halhasson meg, a leány pedig egyedül nem tudott meghalni;
és minthogy Mirákoló mester azt a kis apagyilkossági ügyet
szerencsésen elsimította a hatóságok előtt, tovább él, virágot szed,
de nem tud felejteni. A jó Mirákoló, aki továbbra is atyailag
gondoskodik róla, azt a tanácsot adja neki, hogy ha már a szíve
ellenállhatatlanul a katonasághoz vonja, álljon be az egészségügyi
csapatokhoz betegápolónőnek. „De hát akkor miért öltem meg az
apámat?! – kérdhetné tőle Moser Mari – ha továbbra is
betegápolónőnek kell maradnom!“
És most már a szerző áll elő a maga meglepetésével. Kiderül
ugyanis a darab végén, hogy mindez azt a tanácsot kivánta
példázni, hogy: „Hallgassátok meg, amikor az élet szava hí
benneteket!“ Hát hiszen ezek mind hallgattak az élet szavára!… De
vajjon kívánatos-e az élet szavára hallgatni, ha ennek a
szófogadásnak ilyen gyors pusztulás, az apostoli igék áhítatos
hallgatóinak ilyen tömeges halála jár a nyomában?! („Majd szépen
fogunk hallgatni erre a hivogatásra!…“ – mondanák sokan
Budapesten.) De pardon!… „Félreértés!… – folytatja Schnitzler
doktor – Életnek én csak a szerelmi életet nevezem! És ennek az
igazi életnek egyetlen órájáért, az élet minden örömének egyetlen
éjszakába való belesűrűsítéséért érdemes feláldozni mindent, a
hosszú életet, a tartalom nélküli évek egész értéktelen sokaságát és
minden tekintetet, amelyeket komolyan szoktatok venni, amelyekért
közületek olyan sokan tartózkodnak az élet kéjeinek egyetlen
éjszakába való komprimálásától!“ Vagy úgy?! Az már más. Hanem
erről az Élet szava című drámából kissé bajos meggyőződni. Mert
Moser Mari a harmadik felvonásban csak egyetlen mondatban
nyilatkozik az éjszakájáról: „azután megértem üdvösséget, ahogy
soha nem is álmodtam, kétségbeesést, ahogy ember el nem
képzelheti… mi keresni valóm van még a földön?“ – de nem mondja,
hogy az az üdvösség fölért minden utána következő
kétségbeeséssel és hogy szívesen vállalja a hosszú kétségbeesést,
mint annak a rövid üdvösségnek az árát, váltságdíját. (Amint hogy a
véralkata szerint mindig különbözőképpen ítéli meg az ember, hogy
az élet örömeivel való sokféle gazdálkodás közül melyik a helyes; s
a legtöbb embernek erről minduntalan más-más a véleménye, a
körülményekhez képest.) Ahogy pedig Kata agyongyönyörködi
magát, az erősen hasonlít a sárba fulladáshoz; ez a kép se
meggyőző, még csak nem is csábító. De ne tünődjünk ezen
hosszan, mert mire lélekzetet vehetünk, Schnitzler doktor már maga
is ellentmond magának. Mégis csak jó életben maradni, mert: „Lássa
– mondja Schnitzler doktor Marinak – ma virágot szed az erdő
szélén és odanyújtja a homlokát a nyári szellőnek…“ „Maga él, Mari,
a többi csak volt. Amaz éjszaka és ama reggel óta is nappalok
következtek az éjszakára… virágot szed, a ragyogó déli égbolt alatt
beszél velem, stb., mindez élet… és ki tudja, nem fogja-e egyszer,
idővel, sokkal tisztábban és mélyebben hallani az élet szavát, mint
azon az éjjelen, mikor dolgokat élt át, melyek oly félelmes és izzó
nevűek, mint gyilkosság és szerelem?!…“ Tehát a hosszú élet, a
tartalom nélküli évek egész értéktelen sokasága se kutya?!… már
csak azért sem, mert még sokszor lehet hallani benne „az élet hívó
szavát“?! De hát melyik a választani való, amikor választani kell:
minden földi gyönyörűségnek egyetlen fenséges éjszakába való
komprimálása vagy a tartalom nélküli, de napsütéses és várandós
élet sokasága? Hiszen a darabjának erre a kérdésére kellene
felelnie!… hiszen a szerző maga vetette fel a kérdést!… De
Schnitzler doktor úgy felel a saját kérdésére, mint a fázódó és éhes
cigány, akitől azt kérdezték, hogy mit választ: melegedni akar-e
inkább, vagy enni? A legjobb – mondja – a tűznél szalonnát pirítani!
Bizonyára, de mintha tréfálna, mikor a maga kérdésére nem akar
felelni. Vagy maga se tudja, hogy tulajdonképpen mit kiván
mondani?!… Semmi különöset, csak egy kicsit kacérkodni óhajtott
az epikureizmussal és egyben az amoralista világfelfogással?!
Utoljára, mintha mégis jobban húzna a hosszú élethez, az akár
tartalom nélkül való, de nem reménytelen évek nem egészen
értéktelen sokaságához, mint az élvezeteknek huszonnégy órába
való kögítéséhez. Mert azt mondatja Schindler doktorral Marinak
Kata holttesténél: „Az, hogy én jó ember vagyok… hogy maga
gonosztevő… és hogy ez a halott bűnös volt… csak: szavak!
Magának még süt a nap és nekem… és azoknak (a gyerekekre
mutat, akik átszaladnak a réten). Ennek már nem. Más egyebet
semmi bizonyosat se tudok a világon! (Gyerekek nevetve szaladnak
át a réten és eltünnek az erdőben.)“ Vége.
Hát éppen ez az okoskodás – amelyet Schindler doktor
tanulságul bök ki a darab pointejének – az a valami, amire joggal
lehet elmondani, hogy csak: Szavak!… Üres beszéd!… Frivol játék a
gondolattal és a kifejezéssel!… Mert régi útszéli igazság, hogy kevés
a bizonyosságunk, de nem igaz, hogy az emberi elmének sok ezer
éves nyugtalansága teljességgel semmi eredményhez nem vezetett
volna s hogy mindazok a fogalmak, amelyekhez a jó és rossz
kérdése dolgában az emberek mindezidáig eljutottak: csupa fallácia.
Csakhogy arra, hogy ehhez a kérdéshez hozzászólhasson, Schitzler
Arthurban nincs meg a kellő komolyság. (1911 november.)
XLVI.

SCHÖNHERR.

Hit és haza.

Die Tragödie eines Volkes – ez az alcíme Schönherr Hit és haza


című színművének. Ezt Katona írhatta volna Bánk bánról. A
Schönherr darabja lehet mártirológia, de nem tragédia; még csak
nem is dráma.
Ennek a darabnak már a tárgyválasztása is kompromittálja
szerzőjét. Az ellenreformáció borzalmasságairól ír, tendenciózusan –
és ez magában véve is lemondatja a szerzőt a kifogástalan írói
szereplésről, mert vagy elmaradottságról, vagy rosszhiszeműségről
tesz bizonyságot. A vallásháborúk rettenetességei már századokkal
ezelőtt befejeződtek; akinek most jut eszébe gyászolni: az, ha
őszinte, későn született a világra. Ha pedig ez a tárgyválasztás a
felekezeti elfogultság érzéseire spekulál, úgy még inkább elítéli az
írót. Az inkvizició titkai, vagy más hasonló könyvekben felhatalmazott
rémségek csak kinyomtatott szószátyárság, de nem irodalom; csak
alsórendű propaganda-csinálás, de nem história írás.
Ezekről a dolgokról most már csakis a nyugodt, elfogulatlan,
pártatlan történetírásnak szabad beszélnie, amely nem ismer
tendenciát. És ha a történeti dráma írója elszakad a historikustól,
akkor elszakad az irodalomtól is. Schönherr darabja az említett
nyomtatványokra emlékeztet, amelyek kritika nélkül csoportosított
vádaskodások halmazát foglalják magukban, – amelyek a teljesen
tajékozatlanok között való hangulatcsinálásra törekednek azzal,
hogy szentírásként adják elő a meg nem vizsgált adatok közűl a
legritkábbakat.
De, noha Schönherr nem támaszkodhatik se az oknyomozó
történetírásra, se a köztudatra, fogadjuk el históriának mindazt, ami
nagyobb részben csak a képzeletéből sarjadzott, higyjük el, vita
nélkül, hogy az ellenreformáció az osztrák Alpes-vidéken csakugyan
elkövette mindazokat a borzalmasságokat, amelyekkel ez a darab
vádolja, s nézzük csak azt, hogy kétes eredetű adataiból milyen
drámát szerkesztett a szerző.
Sokáig azt hisszük: semmilyent. A darab elején felcsillan valami,
ami összeütközést, küzdelmet sejtet, de ennek az elkövetkezésére a
darab végéig várhatunk. Egy császári poroszló járja be a falvakat; a
megbizatása az, hogy minden olyan parasztot, aki Luther tanát
vallja, üldözzön ki az otthonából és térítsen tűzzel-vassal!… Ennek a
parancsnak a poroszló szörnyű kegyetlenséggel felel meg; csurog
róla a vér. A szerző, hogy kiélezze a tendenciát, hangsúlyozza, hogy
ez a véreb nem csupán megbízást teljesít, hanem egyszersmind
fanatizmusának a szenvedélyét elégíti ki. Volnának benne emberi
érzések; csak a vakbuzgósága teszi ilyen rémségesen kegyetlenné.
A dráma ott kezdődnék, hogy olyan parasztok közt, akik szívesen
eltitkolnák lutheránus hitüket, meggyőződésüket azért, hogy ne
kergessék ki őket az otthonukból, ne legyenek kénytelenek
elveszíteni a földjüket, hogy ott halhassanak meg, ahol születtek,
ennek a fiók-Arbueznek a rémtettei sok emberből kikényszerítik az
őszinte hitvallást. Egy Rott Kristóf nevű paraszt látszik a dráma
főalakjának; ez, mikor látja, hogy a véreb megöl egy asszonyt csak
azért, mert ez se élve, se halva nem akarja kiereszteni a Bibliát a
kezéből, lelkiismerete fellázadásában szint vall. Hát neki és az ő
népének is mennie kell. De az első felvonásban még meg se indul a
dráma s máris megreked; a főalak, Rott Kristóf, a darab végéig a
háttérbe szorúl, mert más parasztokat látunk, új, meg új parasztokat,
akikkel ugyanaz történik, fölötte csekély változattal, fölötte
egyhangúan újra meg újra ugyanaz. És mindezek az alakok, akik a
síralmas kántálás vezérszólamát egymástól átveszik, csupa
szánalomraméltó, tehetetlen áldozat, megannyi vértanú, megannyi
minden küzdelemre képtelen, eltiport porszem. Egyik se kelthet
részvétet, annyira porszemszerűen egyformák és passzivak. És
epizód epizódra következik; mindegyik majdnem egészen ugyanaz,
ami az előtte való; sehol semmi fordulat; plus ça change, plus c’est
la même chose. Mindez harmadfél felvonáson át.
Végül a szerző egyet gondol s a harmadik felvonás végén
megkezdődik a dráma, hogy mindjárt be is fejeződjék. A poroszlónak
el kell üldöznie a lutheránus parasztokat, de vissza kell tartania a
gyermekeket, mert ezeket még meg lehet téríteni. De Rott Kristóf fia,
a kis veréb, nem akar elszakadni szüleitől, s hogy megmeneküljön a
poroszlótól, beleugrik a patakba, de a sebes ár oda vágja a malom
kerekéhez s beleful a vízbe. Rott apai fájdalmában leteperi a
poroszlót s már agyonvágná a szekercéjével, de a poroszló azt
hörgi: „Szent Szűz, mint hű szolgád halok meg!“ Erre Rott, látva,
hogy a poroszló minden kegyetlenségét vakbuzgóságból cselekedte,
elereszti az embert és… kézfogással búcsúzik el tőle! A poroszló
pedig bámulva néz utána, mintha Jézus Krisztust látta volna és
széttöri a kardját. Hát ez a későn érkezett, miniatűr-dráma elrettentő
példánya a minden lélektani igazság nélkül való írói kieszelésnek;
cifra és nyilvánvaló hazugság – mert hiszen az annyira friss apai
fájdalom, amilyen a Rotté, nem lehet hajlandó arra a nyugodt
filozofálgatásra, amely a hasonló lelki átalakulás előfeltétele, nem
lehet hajlandó hasonló, nem is annyira humanizmusból vagy
evangéliumi érzületből, mint inkább történetfilozófiából eredő
rögtönös megbocsátásra, s azt a poroszlót, akit a Schönherr
darabjában láttunk, nem forgathatja ki egész gondolkozásvilágából a
valójában érthetetlen nagylelkűségi rohamnak semmiféle póza,
annál kevésbé az ilyen attitüd, amelyet csak századokkal később
tettek divatossá a Jockey-Clubok. És mindez szemmelláthatóan
csak azért, hogy a szerző tendenciájához híven azzal állhasson az
elképpedt néző elé, hogy lám, milyen dicséretesen előzte meg korát
ez az egyszerű paraszt!… lám, milyen nemeslelkűek voltak ezek a
vértanúk, akiket tűzzel-vassal irtottak!… lám, milyen gazságot csinált
az ellenreformáció!… Hát jól van, de mit csináljunk az
ellenreformációval, amelynek már úgyis olyan régen vége van?!
Hogy ez a tartalomtalan, sivár, írói verejtékszagú színdarab, –
amelynek minden érdeme: a gondos környezetrajz és bizonyos
ügyesség a jelenetek csoportosításában – Bécsben és Berlinben
kivételesen tetszett, ezen nem érdemes sokat tanakodni. Bécsben
nagyon szeretnék Schönherr Károlyt világhíres osztrák íróvá nevelni
vagy felfújni, ami érthető, mert ilyen már régóta nincsen. Berlinben
pedig még ma sem tudnak betelni azokkal a német vagy osztrák
parasztokkal, akik mintha csak a Zola Terrejéből tanultak volna
földéhséget, állatias földhözragadtságot és egyben romantikus
érzést, de különösen stílust. Berlinben tökéletesen elég a dialektus,
az ilyen tónus: „Bader, mein Bauch ist gespannt wie ein’ Trommel!
Nimm mir ’s Wasser, dass ich wieder schnaufen Kann!“… – hogy
sokan így ujjongjanak: „Ez, ez a színtiszta igazság! Voilà, la vraie
comédie!…“ Azután a berlini sikerben része lehetett a felekezeti
elfogultságnak is: korlátolt emberek mindenütt vannak a világon.
(1911 december.)
XLVII.

BARRIE.

Egyenlőség.

A legtöbb új színpadi munkának közös hibája, hogy minden


lelemény nélkül valók. Nagyon egyformák s nagyon egyhangúak. Az
egyik a másiknak jóformán csak variációja s tulajdonképpen nap-nap
után csupán annyi darabot látunk, ahány a műfaj. Van egy drámánk
s ennek száz mása; egy bohózatunk és ennek száz ikertestvére; egy
vígjátékunk és száz más hasonló; egy történelmi darabunk s ennek
száz, nem nagyon különböző kiadása és így tovább. Az ugyanegy
műfajhoz tartozó darabok untatóan hasonlítanak egymásra rokonok
a témáik, közösek a motívumaik, ugyanazok az alakjaik, egyforma a
tónusuk. Ebben az általános s már régibb eredetű monotoniában
szinte felfrissítően hat az olyan darab, amelyben van egy kis
lelemény is. Amelynek tárgya nem egy régi témának a századik
variánsa, hangja nem az untig megszokott, motívumai frissek és
eredetiek, figurái nem sablonosak. Barrie komédiájának a legfőbb
érdeme ebben a frisseségben rejlik, bár megemlíteni való az az
érdeme is, hogy nem nagyképű darab és mégis tartalmasabb sok
másnál, továbbá, hogy ami benne gondolatot kelt s hosszasabban
foglalkoztatja a néző képzeletét, gondolkozását, az nem cafrang a
darabon, hanem magának a cselekvésnek, a mesének a
kisugárzása, a darabban megelevenített helyzetek folyománya, a
színpadi képekből fakadó tanulság.
De főérdeme mégis csak a benne megnyilvánuló invenció, mely
megérzik motivumain, hangján, alakjainak színén és a tárgyán is.
Mert tévedés, – amit kritikaképpen mondtak róla, – hogy a tárgya
elcsépelt vagy legalább is igen ismeretes volna. Ez a tárgy nem
ismeretlen, nem új az elbeszélő irodalomban, de új a színpadon.
Színdarabnál pedig csak az számít, amit a színpadon láttunk vagy
látunk. A nem új ötletet színpadra vinni talán Columbus tojása volt,
de ilyen Columbus tojások találása a legritkább ügyesség.
Számítsuk ehhez, hogy Barrie friss és elmés motívumokat
szerepeltet, amelyek a tárgynak törvényes leszármazói; hogy
fantocheai mulatságosan eredetiek s hogy e vidám
fantazmegóriának a tónusa is, bár erősen emlékeztet az operett
tónusára, sajátos, nem közönséges és amellett a tárgynak
megfelelő.
Más kérdés ennek az invenciónak az irodalmi értéke. Ebből a
szempontból csak másodrendű és második kézből való leleményről
beszélhetünk. Az Egyenlőség egyike a számtalan robinzonádnak;
azoknak a munkáknak, amelyek De Foe alapötletét szőtték tovább;
amelyek Robinson nélkül sohase íródtak volna meg. Színpadon
talán az első robinzonád, de semmi esetre se olyan elsőrangú, olyan
nagy erejű fantázia alkotása, amilyen például maga a Robinsonról
szóló elbeszélés.
Az is kétségtelen, hogy ami a Barrie saját külön invencióját illeti,
ez – a tárgy természeténél fogva – jobban érvényesült volna egy
fantasztikus regény vagy hosszabb elbeszélés keretében. Néhol a
nézőnek az az impressziója, mintha egy hosszú és érdekes
részletekben gazdag történetnek négy színpadi képpé való
átdolgozásával volna dolga, amely színpadi képek jobban hatnának,
ha annak a hosszú históriának a legtöbb részlete nem maradna
ismeretlen előttünk. A szerző elsuhan olyan részletek mellett,
amelyek mögött mintha a kalandok egész sora rejtőznék.
Kár, hogy ezt a pompás anyagot nem regénnyé dolgozta fel. A
téma szinte kívánkozik a novellisztikus forma után; a tárgy
természete nem a nagy vonásokkal való festést, hanem a részletező
tárgyalást hozta volna magával. Maga a kissé felszínes filozoféma, –
hogy nincsen egyenlőség… hogy mindenütt szükség van
parancsolókra és olyanokra, akik csak engedelmeskednek… hogy a
természet ölén az lesz az úr, a király, aki a leginkább arra való, aki a
legtöbbet tudja és bírja… hogy a puszta szigeten leomlanak a
társadalmi választófalak s viszont a civilizált miliőben elfelejtődik
minden érdem s magától feltámad a társadalmi tagoltság, stb. – ez a
kissé szűk látókörre való tétel egyforma sikerrel tárgyalható
színdarabban és elbeszélésben, de az a mese, melyet Barrie tétele
illusztrálására választott, novellisztikus formát kivánna, ilyenben
sokkal hatásosabb volna.
Mert a komédiában, ahol nem láthatjuk, hogy a két esztendős
robinzonság hogyan formálja át az urakat és szolgákat lassanként
és fokozatosan egészen más emberekké, ahol – két képben,
mindössze néhány jelenet során – jóformán csak az eredményeket
láthatjuk, de nem magát az átalakulást, ahol a szolga robinzoni
értékét csak sejthetjük s az urak megszelídülését csak egy-egy
drasztikus vonás láttatja: az egymásra gyorsan következő, nagyon
változott helyzetek egy kissé meglepik a nézőt, az alakok kellő
megvilágítás híjján, minden új jelenetben újra és mindig
idegenszerűen hatnak, a cselekvés egyre többet veszít
valószerűségéből s az évek hatását rikítóan festő színpadi képek
operett-szcénákká válnak. Amint hogy ez a darab valójában operett
zene nélkül. Természetesen, a szónak jó értelmében. Vidám
persziflázs, melyben nem kell túlságosan komolyan venni se a
mesét, se az alakokat, könnyed persziflázs, mely azonban nincs
minden komolyság nélkül s melyet ügyesen szőtt mese, sok
jellemzetesség és még több ötlet tesz elevenné. (1904 január.)
XLVIII.

PINERO.

Ne váljunk el.

Arthur Pinero abban a darabjában, amelyet a Nemzeti Színház


Ne váljunk el címen mutatott be, két gondosan megrajzolt női alakot
vezet a néző elé. Az egyik női alak: a megtestesült féltékenykedés.
Az az asszony, aki annyira nem tud urává lenni a képzelődésének és
a véralkatának, hogy a legtürelmesebb férjet is kiugrasztja a pokollá
tett együttélésből, de örökkön lobogó féltékenységével, – melynek
tüzét tovább is táplálja folyvást nyugtalan, mindig izzó képzelete –
még azután is üldözi és gyötri szerencsétlen férjét, sőt nem csak
éppen ezt, hanem mindazokat, akik férjével valamelyes
összeköttetésbe keverednek. Ez a típus bizonyára nem új, de a
színpadon alighanem mindig új marad. És Pineronál a típus nagyon
egyéni és eleven alakká válik. Ez az Olive, akinek a féltékenykedése
még akkor is minduntalan fel-fellángol, amikor a legjobban fáradozik
azon, hogy kedvességével kibékítse és visszahódítsa a férjét, nem
olyan sablonosan beszél és cselekszik, mint ezer meg ezer színpadi
figura, amelyet lelkesen tapsolnak. És „könyörgő áriá“-jában,
amelyben megalázkodás és szemrehányás váltakozik, amelyben hol
elbájoltan turbékol, hol vércseként víjjong és esik neki egy-egy
szónak, aszerint, amint férje egyformán kedveskedő mondásaiban
hol csak hízelgést, hol új gyanakvást talál, többet is lelhetünk ügyes
műsorszámnál. Ha olyan szigorúan ítélünk, hogy Olive
féltékenykedésének a rajzát nagyon is könnyedvonalúnak találjuk,
mit mondjunk a mai drámaírásban szokásos jellemrajzolásról?!
Könnyedvonalú, talán azért, mert egy kissé vígjátéki marad s mert
nem juthat tragikus akcentusokhoz?! De hiszen csak így igaz és így
nem bántó a dolog, mert ne felejtsük el, hogy Olive
féltékenységének az alapja: az oktalanság, a kicsinyesség, a
magában való érthető bizalmatlanság és nem afféle nagyszerű
tévedés, aminő az Othellóé. És ha Olivenak a mentsége – amellyel
számot tarthat az érdeklődésünkre – az, hogy: ő maga is szenved,
amíg szenvedést okoz, sőt az ő szenvedései nagyobbak, mint
amelyeket másokra mér, a mentsége kisebb volna, ha az
oktalansága halálos sebeket okozna, ha az érzésében is
megnyilvánuló kicsinyesség megölné őt magát, vagy megölne
másokat.
A másik női alakkal szintén ismeretes típus jelenik meg Pinero
darabjában. (De hol vannak az új drámaírásban új alakok s
egyáltalán olyan új valami, ami nem puszta külsőség?!) Az az
asszony, aki nem tartja tiszteletben a konvenciókat s beérve
öntudatának a tisztaságával, túlteszi magát az apró
illemszabályokon, de ahhoz nem elég erős, hogy nyugalommal tudja
viselni ennek természetes következéseit, mert – ha nem is esik
kétségbe azon, hogy az egész világ megítéli, még a bíró is –
fájdalmat érez és egész lelkében megrendül, mikor azt látja, hogy a
férje kételkedni kezd benne. Pinero így egyéníti az ismeretes típust:
Theophila nem tud örömet találni azokban a falusi mulatságokban,
amelyek férjét vonzzák s nem tud a nagyvároson kívül élni (ami talán
hiba, de nem a durvább lelkű asszonyok hibája); elhagyatottságában
szívesen barátkozik John Allinghammel, akit feleségének a
féltékenykedése minduntalan kikerget az otthonából s bár nincs
köztük semmi egyéb, mint barátság, még azt is megengedi Johnnak,
hogy ez egyszer éjnek idején is ellátogasson hozzá, elpanaszolni a
házi bajait (aminek a megengedése kétségtelenül nagy
meggondolatlanság volt, de kevés „felvilágosodott“ vagy
„emancipált“ asszony van, aki sohase követ el semmi
könnyelműséget, úgy, hogy ezért a végzetes éjféli látogatásért
inkább Johnt kell hibáztatni); azután szinte hősies megadással viseli
el, hogy – amikor ezért az oktalanságért a féltékeny feleség a
biróság elé hurcolja – nemcsak „az egész világ“ elitéli s a környezete
is meggyanusítja, nem még a bíró is megbélyegzi, de a Nóra
elcsodálkozásával és kiábrándulásával látja, hogy a látszatot
megvető viselkedése férjének a bizalmát is megrendítette (ami
következetlenség ugyan, de először is nincs minden ráció nélkül,
mert a férjnek mindenkinél jobban kell ismernie a feleségét s azután
meg a szívnek néha több követelése van, mint az értelemnek); végül
Theo, miután Nóra példájára ott hagyta férjét, aki őt nem értette
meg, talán oda sodródnék, hogy csakugyan elkövesse azt, amivel a
biró is meggyanusította (mert csak bizonyíték hiányában mentette fel
a házasságtörés vádja alól), azért a hibájáért, hogy nem tudott ott
maradni folyton pöfékelő férjének az oldala mellett, a lehető
legkeményebben bűnhődik (mert semmisem lehet fájóbb az önérzet
és a hiúság sebeinél): meg kell szégyenülnie Allingham feleségével
szemben, akivel John időközben kibékült, azzal az asszonnyal
szemben, aki őt igazságtalanul vádolta és meghurcolta az egész
világ előtt, még a biróság előtt is.
Ha Theo s vele együtt Pinero nálunk elvesztette a perét, ennek a
főoka az lehet, hogy a mi közönségünk a John és Theo barátságára,
ami a bonyodalom kiinduló pontja, csak a legnagyobb szkepszissel
tudott gondolni. A mi közönségünk nem hiszi el, hogy fiatal férfi és
csinos nő közt barátság is lehetséges, nemcsak szerelem. Az ilyen
barátság csakugyan nem mindennapos jelenség s ha nálunk csak
hitetlenséggel találkozhatik, Angliában sem lehet megszokott valami,
hiszen az angol bíró se hisz Theonak az ártatlanságában. De az
angol néző Theo és John barátságát még se tekintheti olyan
képtelenségnek, aminőnek nálunk tűnt fel a nézők többsége előtt,
amely főképpen ezért fogadta hitetlenkedéssel Pinero meséjét. Ha
Pinero ilyes ritka viszonyra hivatkozik, ennek nálunk csak abban
találták meg valamelyes magyarázatát, hogy az angol férfi véralkata
kevésbé heves s az önuralma nagyobb, mint a kontinentális emberé,
a nő tehát, ha a szokottnál több bizalmasságot enged meg magának
a férfivel szemben, Angliában kevésbé provokálja a veszedelmet,
mint másutt bárhol. Pedig abban, hogy az angol nő átlagos
műveltsége jóval nagyobb, mint kontinentális versenytársaié, egy
második magyarázat is rejlik. Az az értelmi harmónia, mely a
barátság alapja, férfi és nő közt is könnyebben képzelhető el ott,
ahol a férfi és nő közt kisebb a szellemi távolság, mint ott, ahol a nő
megmaradt puszta szerelmi játékszernek s csak öltözködése
elegánciájával különbözik a kelet asszonyától. Pinero továbbá
hangsúlyozza ennek a szokatlan barátkozásnak az alkalmiságát. Ez
a férfi és nő – elmondja – azért keresik önkéntelenül egymás
barátságát, mert mind a kettő annak a bajnak az áldozatát látja a
másikban, amelyikben ő maga is laborál; és: solamen est miseris
socios habuisse malorum. A férfi, aki az otthon békéjére sóvárog s
akit felesége féltékenysége kiüldöz az otthonából, meg a nő, aki a
maga otthonának a levegőjét nem tudta megszokni s elhanyagoltnak
vagy „meg nem értett“-nek képzeli magát (mint annyi meg annyi nő!):
öntudatlanul keresik a vigasztalódást egymás társaságában vagy
inkább abban, hogy elbeszélgethetnek a közös bajról, melynek a
tárgyalása másokra nézve unalmas volna, őket pedig mindennél
jobban érdekli. És végül Pinero nem is mondja azt, hogy a
kényszerűségből társtalanná vált férfi és a kedve ellenére
társtalanná lett nő barátságába nem játszik bele a szerelmi
vonzódás. Ellenkezőleg, a meséje arra alludál, hogy ez a barátság
csak szerelemhez vezethetne, ha a viszálykodó házastársakat nem
kötné s nem vonná vissza erős érzés, kit-kit a maga párjához. Pinero
csak annyit mond, hogy se Theo, se John nem tudja, ha
barátkozásuk természetszerűen szerelmet csiráztat ki bennük; hogy
mind a kettő jóhiszemű, amikor azt képzeli, hogy csak a barátot
keresi a másikban. És ez talán nem olyan képtelenség, mint
amilyennek nálunk sokan látták.
Túlságosnak tűnik fel az a megütközés is, amely nálunk mintha
megpecsételte volna Pinero darabjának sorsát. Akik hihetetlennek
találták John és Theo barátságát, megbotránkoztak azon is, hogy
Theo elkeseredésében és izgalmában, egy kissé becsíp Johnnak a
lakásán, hogy annál inkább meg kelljen szégyenülnie Oliveval
szemben. Pedig Pinero ennek a magyarázatával nem marad adós.
Pineronak, ha nálunk nem is mindenki vette észre, igenis, van
tendenciája. Egy angol speciálitás, a „Crim. Con.“-pörök ellen izgat.
Ismeretes, hogy Angliában a törvény a házasságtörést, úgy a férfiét,
mint az asszonyét, súlyosan bünteti és hogy ebben a büntetésben
nem a legkevesebb: maga a tárgyalás. Az angol peres eljárás merev
formalizmusa, az a minuciózus gondosság, amellyel a bíró a
tényállás minden részletét a homályból kiásni és napfényre vinni
iparkodik, továbbá az a körülmény, hogy minden ilyen tárgyalás a
tanuk, szakértők és ügyvédek egész raját mozgósítja, tehát mindig
olyan nagy nyilvánosság előtt zajlik le, mint egy színházi előadás,
végül az, hogy okvetetlenül a legnagyobb botránnyal jár, mert az
angol prüdéria, a túlságosan szigorú közvélemény, a szenzációra
éhes újságok és újságolvasó tömeg számára egy „Crim. Con.“-per a
legédesebb csemege – az ilyen tárgyalást mindig rettenetes
torturává teszik a váldottra nézve. És ha Angliában a házastársak
egyike mindenáron bosszút akar állni a másikon vagy azon, akit a
házasélete feldúlásával gyanusít, mihelyt vélt igazában rászánja
magát, hogy megindítsa ezt a pert, akármibe kerül, mihelyt vállalja
azt a kockázatot, hogy egész vagyont kell fizetnie abban az esetben,
ha nem sikerül a vádját bebizonyítania, mert ez a tréfa mindig tenger
pénzbe kerül: akkor okvetlenül rettenetesen meg fogja gyötörni a
másikat és a harmadikat.
Nyilvánvaló, hogy a régi intézmény csak nagy vagyonú emberek
fejére zúdíthat bajokat. Hanem azért – ha a szegény emberre nézve
nincs is jelentősége a dolognak – az angol írók már régóta izgatnak
a „Crim. Con.“-pörök ellen. Pinero, mikor a reformot követelők
nyomába lép, a sok régi kifogás közül ezeket hangoztatja: 1.
Szörnyűség az ilyen per, mert a vádlottak közt ártatlanok is vannak s
az eljárás ezekre is olyan torturát mér, amely jóvátehetetlen s
amelyért semmisem adhat kárpótlást. 2. Szörnyűség, mert az eljárás
olyan részletekre is kiterjeszti a legnagyobb nyilvánosság előtt való
vizsgálódást és olyan módon szellőzteti a családi otthont, hogy ez a
lelki motozás az ártatlant is megbélyegzi. A felmentés esetében is
semper aliquid haeret. És a bírónak nem lehet feladata, hogy
gyanussá tegye olyan nők hírnevét, akikre semmi rosszat sem tud
rábizonyítani. A bíró kételkedése gyanakvást kelthet olyan
családtagokban, akik előbb nem gyanakodtak, a botrány
lehetetlenné teheti olyanok együttélését, akiket az érzéseik
egymásra utalnak; a bírónak nem lehet feladata bizalmatlanságot
kelteni, amikor a női tisztességről van szó és nem lehet tiszte egy
minden perköltség fizetésére kész vádló kedvéért feldúlni családok
életét. 3. És a fődolog: ez a kegyetlen eljárás, mely százezer
kiváncsinak enged bepillantást a családi élet szentélyébe, mely az
otthont úgy kutatja át, mint egy orgazda barlangját, mely a
legnagyobb nyilvánosság előtt firtatja a nő szemérméhez tartozó
dolgokat – demoralizál. Éppen annyira, mintha a megvádolt ártatlan
nőt pőrére vetkőztetnék le a sokaság előtt. Mint a nagy Galeotto, ez
a hatósági lélek- és testmotozás is annak elkövetéséhez hajthatja az
ártatlant, – mert ez már úgyis beszennyezettnek látja magát, –
aminek az elkövetésével előbb igazságtalanul vádolták. Ez nem
lehet feladata az igazságszolgáltatásnak.
Pinero nem juttatja idáig hősnőjét s ha jelzi hogy Theo is erre az
útra kerülhet, rajta van, hogy minél több mentséget keressen Theo
számára. A főmentséget persze Theo rosszul titkolt nagy
érzékenységében, elkeseredésében, vigasztalanságában és
reményvesztettségében találja meg; de nem tartja feleslegesnek az
alkalmi mentséget sem s azt hiszi, hogy Theo legelső nagy
felizgultságában juthat legkönnyebben veszedelembe, kivált ha
keserű érzésének, bánatának és idegességének legyőzése végett,
anélkül, hogy észrevenné, mit csinál, a „szíverősítő“ narkotikumához
téved. Azon való megütődésünket, hogy az előkelő angol hölgy itt a
Falu rosszával találkozik, mérsékelheti annak a tudata, hogy az
antialkoholizmus – talán legkivált a klimatikus viszonyok
következéseképpen – Angliában hódít a leglassabban, hogy a
szigetlakók előkelői jobban rabjai maradtak az ivásnak, mint a
kontinensen lakó kiváltságosok és hogy angol földön régidő óta a
nők között is – még a felsőbb körök asszonyait sem véve ki –
elterjedtebb ez a szenvedély, mint másutt. Angol néző, mert nem
talál benne valami nagyon szokatlant, nem is akad fenn Theonak a
becsípettségén és annak találja ezt, aminek Pinero szánta:
mentségnek, nem pedig súlyosbító körülménynek, mint mi.
Ez csak egyik s talán legburleszkebb példája annak, hogy ami
Pinero darabjában a londoni közönségnek igen tetszhetett, az
nálunk fonákul hatott; de több ilyen példát lehetne felsorolni. Az
angol ember százados intézmények és hagyományos szokások ma
is hatalmas erejénél fogva sokban különbözik attól az átlagos
európaitól, akit mi megismertünk, megszoktunk. És minél
speciálisabban angol figurákat visz Pinero a színpadra (már pedig
ma jóformán ő az egyetlen angol drámaíró, aki színdarabjaiban
igazán angol életet rajzol): a mi közönségünk annál kevesebb
megértéssel, annál hidegebben áll vele szemben.
Kár. Mert tagadhatatlan ugyan, hogy Pinero darabjában maga a
dráma kissé szegényes, hiszen csak a második felvonás nagyjára
szorítkozik s mindössze néhány szép jelenetet foglal le – de hol
vannak az új színműirodalomban azok a drámák, amelyek
fordulatosságban gazdagabbak és ehhez a gazdagsághoz nem a
pszichológiai igazság rovására jutnak el?! Az is vitathatlan, hogy
Pinero ebben a darabjában, kevés színpadi ügyességet fejtve ki, a
novella-író módjára dolgozta ki témáját, mert egy hosszú felvonás
alatt se tud elkészülni az expoziciójával, sok időt pazarol el a puszta
jellemzésre és az unalmasságig hosszadalmasan állapítja meg
vékonyka drámájának az antecedenciáit: mindamellett ez a darab
több figyelmet érdemelt volna, mint aminőben nálunk részesült. Mert
– ami a mai színműirásban már ritkaság – igazi emberek
szerepelnek benne, akik úgy beszélnek és úgy cselekesznek, ahogy
az életben szokás. (1913 január.)
XLIX.

SHAW.

Nem lehessen tudni.

Crampton úr valaha olyan nőt vett feleségül, aki nem szerette őt.
Bár az asszony a fajfentartáshoz a szerelmet fölöslegesnek tartja,
férjének azt a bűnét, hogy őt a feleségévé tette, jónak látja minden
rendelkezésére álló eszközzel megtorolni. Nemcsak hogy a
legteljesebben kielégíti önállóságra törő hajlamait, nemcsak hogy a
közéleti szereplésnek él és szónoklatokat tart a nők jogairól, hanem
üres óráiban azzal szórakozik, hogy agyonbosszantja a férjét. Mikor
már három gyermekük van, Crampton úrnak elfogy a türelme és
megszökik a családjától. Nyugodt lelkiismerettel teszi ezt, mert a
felesége is gazdag. Az asszony elköltözik Madeirába s itt a maga
elveinek szellemében, exotikus nevelésben részesíti a gyermekeit,
akik exotikus állatkákká növekednek fel. Tizennyolc év telik el így.
Végre az asszony, aki férje eltűnése óta a leánykori nevét használja,
a gyermekeivel egy angolországi fürdőhelyre utazik s ott a családot
egy kacskaringós véletlen összehozza Cramptonnal.
A kisebbik leánynak ugyanis megfájul a foga s egy ifjú,
éhenkórász fogorvoshoz kerülnek, akit meghívnak ebédre. A derék
ifjú, aki különben sem tudja fékezni azt a mániáját, hogy folytonosan
locsoghasson-fecseghessen, annyival inkább szeretné elfogadni a
meghívást, mert nyomban beleszeretett a nagyobbik kisasszonyba s
az egész családról szerteáradó gazdagság-illatba, de malőrje van
szegénynek. A háziura, akinek már jókora összegű házbérrel
tartozik, szintén aznap huzatta ki vele a fogát s a háziura is meghívja
ebédre, ugyanakkorra, amikorra amazok. A Buridán szamárnak
szituációjában lévő, mindenkit elbájoló éhenkórász nem meri
visszautasítani háziurának a meghívását s a nagyérdekességű
bonyodalmat csak úgy véli megoldhatónak, ha a háziura is a
madeirai családnál fog ebédelni. A háziúr se talál más kivezető utat
a nehéz esetből, mint hogy a kellemes fogorvos kedvéért megegye
az ismeretlen család ebédjét.
A háziúr persze éppen Mr. Crampton. Mikor ez a gentleman
észreveszi, hogy hová jutott, az első percben el akar illanni, de
utóbb, gyermekeinek láttán, valami nosztalgia-féle fogja el a családi
élet után. Tulajdonképpen maga se tudja, hogy mit akar, de azért
diadalmasan versenyezve a legtürelmesebb szamárral, végigvárja
ezt a felvonást. Nos ahogyan a kedves család a véletlenül előkerült
férjet és apát fogadja, az már nem farsangi tréfa, nem is
kutyakomédia, hanem valóságos szaturnália. Pedig kivált a
gyerekeknek, ezeknek a talán nem is Madeirából, hanem a Fidzsi-
szigetekről érkezett infámis kölyköknek semmi egyéb okuk nincs az
apjukkal cudarkodniok, csak az, hogy kitálalhassák, mennyire
kiállhatatlanok tudnak lenni, milyen borzasztóan neveletleneknek
nevelte őket az anyjuk, és hogy mennyivel alávalóbbak tudnak lenni
a gazdagság minden kényelmében élő, jól öltözött fiatal lények a
kannibál-gyerekeknél vagy növekedni kezdő párduc-ivadékoknál.
Mintha valami perverz gyönyörűséget találnának annak
exhibiciójában, hogy mekkora szemtelenségre képesek és milyen
magasfokú utálatosságot tudnak kifejteni. Crampton pedig ahelyett,
hogy visszafutballozná őket Madeira kapujába, szelíden
elégedetlenkedik velök vagy babuskálja őket.
Eközben a nézőnek végig kell hallgatnia, hogy dr. Valentine, aki
alighanem egy madeirai borbélyműhelyben végezte a fogászati
tanulmányait, micsoda szóáradattal vall szerelmet, a „szerelem“ szó
használata nélkül, de nem csupa e vagy i hangzó alkalmazásával, a
„szerelem“ szótól iszonyodó és különben rendkívül együgyű Glória
kisasszonynak. Azonkívül végig kell néznie egy Pry Pál-szerűen
minden lében kanál, tűrhetetlenül konfidens és szánalmas
életbölcsességeket kenetesen szónokolgató pincérnek a színpadon
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like