443:
161:, etc. would each define the appropriate formula to calculate their area. The idea is to look at objects as "black boxes" so that changes to the internals of the object can be made with minimal impact on the other objects that use it. This is known as encapsulation and is meant to make code easier to maintain and re-use.
164:
Method overloading, on the other hand, refers to differentiating the code used to handle a message based on the parameters of the method. If one views the receiving object as the first parameter in any method then overriding is just a special case of overloading where the selection is based only on
812:
Special methods are very language-specific and a language may support none, some, or all of the special methods defined here. A language's compiler may automatically generate default special methods or a programmer may be allowed to optionally define special methods. Most special methods cannot be
208:
fetch), without the dependent code needing to be changed. The concepts of encapsulation and modularity are not unique to object-oriented programming. Indeed, in many ways the object-oriented approach is simply the logical extension of previous paradigms such as
1079:
Some procedural languages were extended with object-oriented capabilities to leverage the large skill sets and legacy code for those languages but still provide the benefits of object-oriented development. Perhaps the most well-known example is
1088:
programming language. Due to the design requirements to add the object-oriented paradigm on to an existing procedural language, message passing in C++ has some unique capabilities and terminologies. For example, in C++ a method is known as a
405:. They have a similar purpose and function to destructors, but because of the differences between languages that utilize garbage-collection and languages with manual memory management, the sequence in which they are called is different.
152:
are two of the most significant ways that a method differs from a conventional procedure or function call. Overriding refers to a subclass redefining the implementation of a method of its superclass. For example,
176:
are used to read the data values of an object. Mutator methods are used to modify the data of an object. Manager methods are used to initialize and destroy objects of a class, e.g. constructors and destructors.
108:) can be used for multiple different kinds of classes. This allows the sending objects to invoke behaviors and to delegate the implementation of those behaviors to the receiving object. A method in
375:. Destruction in most languages does not allow destructor method arguments nor return values. Destructors can be implemented so as to perform cleanup chores and other tasks at object destruction.
245:). Initialization may include an acquisition of resources. Constructors may have parameters but usually do not return values in most languages. See the following example in Java:
796:
allow classes to be created and deleted. In this sense, they provide the same functionality as constructors and destructors described above. But in some languages such as the
842:
based on the class they are called on and not dynamically as in the case with instance methods, which are resolved polymorphically based on the runtime type of the object.
185:
831:
in that sense. An example would be a static method to sum the values of all the variables of every instance of a class. For example, if there were a
59:
1840:
1820:
1799:
1778:
1757:
1736:
1715:
1673:
1652:
1594:
1519:
869:
Copy-assignment operators define actions to be performed by the compiler when a class object is assigned to a class object of the same type.
384:
838:
A static method can be invoked even if no instances of the class exist yet. Static methods are called "static" because they are resolved at
606:
In C#, a virtual method can be overridden with an abstract method. (This also applies to Java, where all non-private methods are virtual.)
132:
1569:
1694:
1544:
827:
Static methods are meant to be relevant to all the instances of a class rather than to any specific instance. They are similar to
1131:
591:
If a subclass provides an implementation for an abstract method, another subclass can make it abstract again. This is called
392:
232:
226:
131:
Methods also provide the interface that other classes use to access and modify the properties of an object; this is known as
688:
Interfaces' default methods can also be reabstracted, requiring subclasses to implement them. (This also applies to Java.)
396:
367:
360:
237:
is a method that is called at the beginning of an object's lifetime to create and initialize the object, a process called
861:
This static method has no owning object and does not run on an instance. It receives all information from its arguments.
785:
426:
39:
449:
388:
109:
95:
35:
797:
43:
137:. Encapsulation and overriding are the two primary distinguishing features between methods and procedure calls.
1452:
1085:
189:
91:
881:
and define the operations to be performed with the symbol and the associated method parameters. C++ example:
87:
1447:
822:
214:
68:
64:, which specifies how the object may be used. A method is a behavior of an object parametrized by a user.
430:
878:
793:
425:. It is often used to specify that a subclass must provide an implementation of the method, as in an
197:
149:
1507:
1478:
210:
116:
message to another object and the appropriate formula is invoked whether the receiving object is a
1610:
83:, while its state (whether it is open or closed at any given point in time) would be a property.
804:
at run time: e.g., to create new classes, redefine the class hierarchy, modify properties, etc.
1816:
1795:
1774:
1753:
1732:
1726:
1711:
1690:
1669:
1648:
1642:
1590:
1565:
1540:
1515:
1098:
792:. I.e, for each class, defined an instance of the class object in the meta-model is created.
371:
is a method that is called automatically at the end of an object's lifetime, a process called
181:
145:
100:
1810:
1789:
1768:
1747:
1705:
1684:
1663:
1118:
1106:
1094:
418:
201:
813:
directly called, but rather the compiler generates code to call them at appropriate times.
828:
372:
238:
173:
47:
204:
of the same code can implement a more complex mechanism for balance retrieval (e.g., a
1834:
1539:. Cambridge: Prentice Hall International Series in Computer Science. pp. 52–54.
1102:
442:
112:
programming sets the behavior of a class object. For example, an object can send an
839:
801:
98:
of a given class. One of the most important capabilities that a method provides is
835:
class it might have a static method to compute the average price of all products.
165:
the first argument. The following simple Java example illustrates the difference:
422:
1457:
789:
17:
1809:
DEHURI, SATCHIDANANDA; JAGADEV, ALOK KUMAR; RATH, AMIYA KUMAR (8 May 2007).
401:
205:
71:
of the object, and behaviors are represented as methods. For example, a
788:
rather than an instance. They are typically used as part of an object
1686:
Object-oriented
Programming: Using C++ for Engineering and Technology
1122:
are the means by which a C++ class can achieve polymorphic behavior.
200:(rather than directly accessing the balance data fields), then later
1081:
774:// error: class 'C' does not implement 'IA.M'.
800:
the meta-model allows the developer to dynamically alter the
1665:
Object-Oriented
Programming: Fundamentals And Applications
1460:, also called subprogram, routine, procedure or function
452:
code shows an abstract class that needs to be extended:
27:
Function that is tied to a particular instance or class
1512:
Clean Code: A Handbook of Agile
Software Craftsmanship
192:. For example, if a bank-account class provides a
784:Class methods are methods that are called on a
507:The following subclass extends the main class:
8:
1644:C++ and Object-oriented Programming Paradigm
1562:"Effective Java: Programming Language Guide"
1749:Creating Games in C++: A Step-by-step Guide
855:In Java, a commonly used static method is:
157:may be a method defined on a shape class,
1725:Kirch-Prinz, Ulla; Prinz, Peter (2002).
196:accessor method to retrieve the current
1470:
1130:, are those that do not participate in
1097:which are member functions that can be
429:. Abstract methods are used to specify
1728:A Complete Guide to Programming in C++
1084:, an object-oriented extension of the
1812:OBJECT-ORIENTED PROGRAMMING USING C++
1537:Object-Oriented Software Construction
169:Accessor, mutator and manager methods
7:
1707:Object Oriented Programming with C++
1502:
1500:
879:define or redefine operator symbols
1662:Sengupta, Probal (1 August 2004).
1564:(third ed.). Addison-Wesley.
598:In practice, this is rarely used.
75:object could have methods such as
25:
1731:. Jones & Bartlett Learning.
1641:JANA, DEBASISH (1 January 2005).
798:Common Lisp Object System (CLOS)
441:
433:in some programming languages.
90:, methods are defined within a
1710:. Tata McGraw-Hill Education.
1611:"Abstract Methods and Classes"
1514:. Prentice Hall. p. 296.
1217:"I'm the super class!
1093:. C++ also has the concept of
227:Constructor (computer science)
1:
1841:Method (computer programming)
858:Math.max(double a, double b)
361:Destructor (computer science)
1124:Non-virtual member functions
499:// abstract method signature
1617:. Oracle Java Documentation
1286:"I'm the subclass!
399:, destructors are known as
36:object-oriented programming
1857:
820:
358:
224:
141:Overriding and overloading
1815:. PHI Learning Pvt. Ltd.
1788:Love (1 September 2005).
1668:. PHI Learning Pvt. Ltd.
1647:. PHI Learning Pvt. Ltd.
865:Copy-assignment operators
180:These methods provide an
1791:Linux Kernel Development
1535:Meyer, Bertrand (1988).
1453:Remote method invocation
1139:
883:
690:
608:
509:
454:
247:
50:. An object consists of
1767:Skinner, M. T. (1992).
1075:Member functions in C++
104:- the same name (e.g.,
88:class-based programming
67:Data is represented as
46:, and generally also a
1746:Conger, David (2006).
1560:Bloch, Joshua (2018).
1448:Property (programming)
1418:// Calls |Super::IAm|.
823:Static member function
215:structured programming
1794:. Pearson Education.
1770:The Advanced C++ Book
1704:Balagurusamy (2013).
1683:Svenk, Goran (2003).
307:// constructor method
1689:. Cengage Learning.
1485:. Oracle Corporation
1479:"What is an Object?"
1433:// Calls |Sub::IAm|.
794:Meta-model protocols
1587:C# 10 in a Nutshell
423:implementation body
417:is one with only a
387:languages, such as
211:abstract data types
58:; these compose an
42:associated with an
1585:Albahari, Joseph.
94:, and objects are
1822:978-81-203-3085-6
1801:978-81-7758-910-8
1780:978-0-929306-10-0
1773:. Silicon Press.
1759:978-0-7357-1434-2
1738:978-0-7637-1817-6
1717:978-1-259-02993-6
1675:978-81-203-1258-6
1654:978-81-203-2871-6
1596:978-1-098-12195-2
1521:978-0-13-235088-4
1508:Martin, Robert C.
1119:Virtual functions
1113:Virtual functions
1095:virtual functions
877:Operator methods
385:garbage-collected
184:that facilitates
182:abstraction layer
146:Method overriding
101:method overriding
16:(Redirected from
1848:
1826:
1805:
1784:
1763:
1742:
1721:
1700:
1679:
1658:
1627:
1626:
1624:
1622:
1607:
1601:
1600:
1582:
1576:
1575:
1557:
1551:
1550:
1532:
1526:
1525:
1504:
1495:
1494:
1492:
1490:
1475:
1437:
1434:
1431:
1428:
1425:
1422:
1419:
1416:
1413:
1410:
1407:
1404:
1401:
1398:
1395:
1392:
1389:
1386:
1383:
1380:
1377:
1374:
1371:
1368:
1365:
1362:
1359:
1356:
1353:
1350:
1347:
1344:
1341:
1338:
1335:
1332:
1329:
1326:
1323:
1320:
1317:
1314:
1311:
1308:
1305:
1302:
1299:
1296:
1293:
1290:
1287:
1284:
1281:
1278:
1275:
1272:
1269:
1266:
1263:
1260:
1257:
1254:
1251:
1248:
1245:
1242:
1239:
1236:
1233:
1230:
1227:
1224:
1221:
1218:
1215:
1212:
1209:
1206:
1203:
1200:
1197:
1194:
1191:
1188:
1185:
1182:
1179:
1176:
1173:
1170:
1167:
1164:
1161:
1158:
1155:
1152:
1149:
1146:
1145:<iostream>
1143:
1107:dynamic dispatch
1070:
1067:
1064:
1061:
1058:
1055:
1052:
1049:
1046:
1043:
1040:
1037:
1034:
1031:
1028:
1025:
1022:
1019:
1016:
1013:
1010:
1007:
1004:
1001:
998:
995:
992:
989:
986:
983:
980:
977:
974:
971:
968:
965:
962:
959:
956:
953:
950:
947:
944:
941:
938:
935:
932:
929:
926:
923:
920:
917:
914:
911:
908:
905:
902:
899:
896:
893:
890:
887:
873:Operator methods
834:
829:static variables
775:
772:
769:
766:
763:
760:
757:
754:
751:
748:
745:
742:
739:
736:
733:
730:
727:
724:
721:
718:
715:
712:
709:
706:
703:
700:
697:
694:
684:
681:
678:
675:
672:
669:
666:
663:
660:
657:
654:
651:
648:
645:
642:
639:
636:
633:
630:
627:
624:
621:
618:
615:
612:
582:
579:
576:
573:
570:
567:
564:
561:
558:
555:
552:
549:
546:
543:
540:
537:
534:
531:
528:
525:
522:
519:
516:
513:
503:
500:
497:
494:
491:
488:
485:
482:
479:
476:
473:
470:
467:
464:
461:
458:
445:
409:Abstract methods
350:
347:
344:
341:
338:
335:
332:
329:
326:
323:
320:
317:
314:
311:
308:
305:
302:
299:
296:
293:
290:
287:
284:
281:
278:
275:
272:
269:
266:
263:
260:
257:
254:
251:
195:
174:Accessor methods
160:
156:
127:
123:
119:
115:
107:
82:
78:
74:
21:
1856:
1855:
1851:
1850:
1849:
1847:
1846:
1845:
1831:
1830:
1829:
1823:
1808:
1802:
1787:
1781:
1766:
1760:
1745:
1739:
1724:
1718:
1703:
1697:
1682:
1676:
1661:
1655:
1640:
1636:
1631:
1630:
1620:
1618:
1609:
1608:
1604:
1597:
1584:
1583:
1579:
1572:
1559:
1558:
1554:
1547:
1534:
1533:
1529:
1522:
1506:
1505:
1498:
1488:
1486:
1477:
1476:
1472:
1467:
1444:
1439:
1438:
1435:
1432:
1429:
1426:
1423:
1420:
1417:
1414:
1411:
1408:
1405:
1402:
1399:
1396:
1393:
1390:
1387:
1384:
1381:
1378:
1375:
1372:
1369:
1366:
1363:
1360:
1357:
1354:
1351:
1348:
1345:
1342:
1339:
1336:
1333:
1330:
1327:
1324:
1321:
1318:
1315:
1312:
1309:
1306:
1303:
1300:
1297:
1294:
1291:
1288:
1285:
1282:
1279:
1276:
1273:
1270:
1267:
1264:
1261:
1258:
1255:
1252:
1249:
1246:
1243:
1240:
1237:
1234:
1231:
1228:
1225:
1222:
1219:
1216:
1213:
1210:
1207:
1204:
1201:
1198:
1195:
1192:
1189:
1186:
1183:
1180:
1177:
1174:
1171:
1168:
1165:
1162:
1159:
1156:
1153:
1150:
1147:
1144:
1141:
1128:regular methods
1115:
1103:derived classes
1091:member function
1077:
1072:
1071:
1068:
1065:
1062:
1059:
1056:
1053:
1050:
1047:
1044:
1041:
1038:
1035:
1032:
1029:
1026:
1023:
1020:
1017:
1014:
1011:
1008:
1005:
1002:
999:
996:
993:
990:
987:
984:
981:
978:
975:
972:
969:
966:
963:
960:
957:
954:
951:
948:
945:
942:
939:
936:
933:
930:
927:
924:
921:
918:
915:
912:
909:
906:
903:
900:
897:
894:
891:
888:
885:
875:
867:
859:
853:
848:
832:
825:
819:
810:
808:Special methods
782:
777:
776:
773:
770:
767:
764:
761:
758:
755:
752:
749:
746:
743:
740:
737:
734:
731:
728:
725:
722:
719:
716:
713:
710:
707:
704:
701:
698:
695:
692:
686:
685:
682:
679:
676:
673:
670:
667:
664:
661:
658:
655:
652:
649:
646:
643:
640:
637:
634:
631:
628:
625:
622:
619:
616:
613:
610:
604:
589:
584:
583:
580:
577:
574:
571:
568:
565:
562:
559:
556:
553:
550:
547:
544:
541:
538:
535:
532:
529:
526:
523:
520:
517:
514:
511:
505:
504:
501:
498:
495:
492:
489:
486:
483:
480:
477:
474:
471:
468:
465:
462:
459:
456:
439:
415:abstract method
411:
381:
363:
357:
352:
351:
348:
345:
342:
339:
336:
333:
330:
327:
324:
321:
318:
315:
312:
309:
306:
303:
300:
297:
294:
291:
288:
285:
282:
279:
276:
273:
270:
267:
264:
261:
258:
255:
252:
249:
229:
223:
193:
171:
158:
154:
143:
125:
121:
117:
113:
105:
80:
76:
72:
28:
23:
22:
15:
12:
11:
5:
1854:
1852:
1844:
1843:
1833:
1832:
1828:
1827:
1821:
1806:
1800:
1785:
1779:
1764:
1758:
1752:. New Riders.
1743:
1737:
1722:
1716:
1701:
1695:
1680:
1674:
1659:
1653:
1637:
1635:
1632:
1629:
1628:
1602:
1595:
1577:
1571:978-0134685991
1570:
1552:
1545:
1527:
1520:
1496:
1469:
1468:
1466:
1463:
1462:
1461:
1455:
1450:
1443:
1440:
1151:<memory>
1140:
1114:
1111:
1105:and allow for
1076:
1073:
889:<string>
884:
874:
871:
866:
863:
857:
852:
849:
847:
844:
818:
817:Static methods
815:
809:
806:
781:
778:
691:
609:
603:
600:
588:
585:
510:
455:
448:The following
438:
435:
427:abstract class
410:
407:
380:
377:
359:Main article:
356:
353:
248:
225:Main article:
222:
219:
170:
167:
142:
139:
26:
24:
14:
13:
10:
9:
6:
4:
3:
2:
1853:
1842:
1839:
1838:
1836:
1824:
1818:
1814:
1813:
1807:
1803:
1797:
1793:
1792:
1786:
1782:
1776:
1772:
1771:
1765:
1761:
1755:
1751:
1750:
1744:
1740:
1734:
1730:
1729:
1723:
1719:
1713:
1709:
1708:
1702:
1698:
1696:0-7668-3894-3
1692:
1688:
1687:
1681:
1677:
1671:
1667:
1666:
1660:
1656:
1650:
1646:
1645:
1639:
1638:
1633:
1616:
1612:
1606:
1603:
1598:
1592:
1588:
1581:
1578:
1573:
1567:
1563:
1556:
1553:
1548:
1546:0-13-629049-3
1542:
1538:
1531:
1528:
1523:
1517:
1513:
1509:
1503:
1501:
1497:
1484:
1480:
1474:
1471:
1464:
1459:
1456:
1454:
1451:
1449:
1446:
1445:
1441:
1138:
1137:C++ Example:
1135:
1133:
1129:
1125:
1121:
1120:
1112:
1110:
1108:
1104:
1100:
1096:
1092:
1087:
1083:
1074:
882:
880:
872:
870:
864:
862:
856:
850:
845:
843:
841:
836:
830:
824:
816:
814:
807:
805:
803:
799:
795:
791:
787:
780:Class methods
779:
689:
607:
601:
599:
596:
594:
593:reabstraction
587:Reabstraction
586:
508:
453:
451:
446:
444:
436:
434:
432:
428:
424:
420:
416:
408:
406:
404:
403:
398:
394:
390:
386:
378:
376:
374:
370:
369:
362:
354:
246:
244:
243:instantiation
240:
236:
235:
228:
220:
218:
216:
212:
207:
203:
199:
191:
187:
186:encapsulation
183:
178:
175:
168:
166:
162:
151:
147:
140:
138:
136:
135:
134:encapsulation
129:
111:
103:
102:
97:
93:
89:
84:
70:
65:
63:
62:
57:
53:
49:
45:
41:
37:
33:
19:
18:Static method
1811:
1790:
1769:
1748:
1727:
1706:
1685:
1664:
1643:
1619:. Retrieved
1614:
1605:
1589:. O'Reilly.
1586:
1580:
1561:
1555:
1536:
1530:
1511:
1487:. Retrieved
1482:
1473:
1136:
1132:polymorphism
1127:
1123:
1117:
1116:
1090:
1078:
876:
868:
860:
854:
840:compile time
837:
826:
811:
802:object model
783:
687:
605:
597:
592:
590:
506:
447:
440:
414:
412:
400:
382:
366:
364:
242:
239:construction
233:
230:
221:Constructors
194:getBalance()
179:
172:
163:
144:
133:
130:
99:
85:
66:
60:
55:
51:
31:
29:
1621:11 December
1489:13 December
1391:make_unique
1346:make_unique
373:Destruction
234:constructor
150:overloading
38:(OOP) is a
1634:References
1615:oracle.com
1483:oracle.com
1458:Subroutine
1367:unique_ptr
1322:unique_ptr
1099:overridden
1015:&&
821:See also:
790:meta-model
680:// allowed
431:interfaces
402:finalizers
379:Finalizers
368:Destructor
355:Destructor
190:modularity
69:properties
52:state data
720:interface
693:interface
530:@Override
518:Rectangle
419:signature
202:revisions
118:rectangle
96:instances
61:interface
40:procedure
1835:Category
1510:(2009).
1442:See also
1283:<<
1268:override
1214:<<
1148:#include
1142:#include
967:operator
910:operator
886:#include
846:Examples
735:abstract
668:abstract
665:override
644:abstract
469:abstract
457:abstract
206:database
159:triangle
155:findArea
126:triangle
56:behavior
1190:virtual
1184:default
1169:virtual
1039:private
851:In Java
833:Product
623:virtual
602:Example
521:extends
437:Example
421:and no
198:balance
128:, etc.
48:message
1819:
1798:
1777:
1756:
1735:
1714:
1693:
1672:
1651:
1593:
1568:
1543:
1518:
1292:"
1253:public
1244:public
1223:"
1163:public
1051:string
997:return
940:return
901:public
662:public
620:public
563:return
512:public
397:Python
395:, and
286:String
262:String
250:public
122:circle
73:Window
44:object
32:method
1465:Notes
1424:->
1421:inst2
1409:->
1406:inst1
1379:inst2
1373:Super
1352:Super
1334:inst1
1328:Super
1247:Super
1235:class
1175:Super
1157:Super
1154:class
1126:, or
1063:roll_
1054:name_
1030:roll_
1018:roll_
1012:name_
1000:name_
991:const
982:&
976:const
955:roll_
943:roll_
934:const
925:&
919:const
892:class
786:class
756:class
647:class
611:class
524:Shape
515:class
463:Shape
460:class
334:_roll
316:_name
274:_roll
265:_name
253:class
92:class
81:close
1817:ISBN
1796:ISBN
1775:ISBN
1754:ISBN
1733:ISBN
1712:ISBN
1691:ISBN
1670:ISBN
1649:ISBN
1623:2014
1591:ISBN
1566:ISBN
1541:ISBN
1516:ISBN
1491:2013
1400:>
1394:<
1376:>
1370:<
1355:>
1349:<
1331:>
1325:<
1307:main
1280:cout
1259:void
1211:cout
1193:void
1024:data
1006:data
985:data
979:Data
964:bool
949:data
946:<
928:data
922:Data
913:<
907:bool
895:Data
738:void
702:void
671:void
626:void
536:area
475:area
450:Java
389:Java
340:roll
328:this
322:name
310:this
298:roll
289:name
280:Main
256:Main
241:(or
213:and
188:and
148:and
114:area
110:Java
106:area
79:and
77:open
54:and
1430:();
1427:IAm
1415:();
1412:IAm
1403:();
1397:Sub
1385:std
1361:std
1358:();
1340:std
1316:std
1304:int
1274:std
1262:IAm
1238:Sub
1205:std
1196:IAm
1101:in
1082:C++
1060:int
1045:std
750:();
677:();
551:int
542:int
533:int
490:int
481:int
472:int
413:An
383:In
295:int
271:int
86:In
34:in
1837::
1613:.
1499:^
1481:.
1388:::
1364:::
1343:::
1319:::
1310:()
1301:};
1289:\n
1277:::
1265:()
1232:};
1220:\n
1208:::
1199:()
1178:()
1134:.
1109:.
1069:};
1048:::
1021:==
1003:==
970:==
765:IB
741:IA
729:IA
723:IB
708:()
696:IA
656:IA
650:IB
632:()
614:IA
595:.
496:);
393:C#
391:,
365:A
231:A
217:.
124:,
120:,
30:A
1825:.
1804:.
1783:.
1762:.
1741:.
1720:.
1699:.
1678:.
1657:.
1625:.
1599:.
1574:.
1549:.
1524:.
1493:.
1436:}
1382:=
1337:=
1313:{
1298:}
1295:;
1271:{
1256::
1250:{
1241::
1229:}
1226:;
1202:{
1187:;
1181:=
1172:~
1166::
1160:{
1086:C
1066:;
1057:;
1042::
1036:}
1033:;
1027:.
1009:.
994:{
988:)
973:(
961:}
958:;
952:.
937:{
931:)
916:(
904::
898:{
771:}
768:{
762::
759:C
753:}
747:M
744:.
732:{
726::
717:}
714:}
711:{
705:M
699:{
683:}
674:M
659:{
653::
641:}
638:}
635:{
629:M
617:{
581:}
578:}
575:;
572:w
569:*
566:h
560:{
557:)
554:w
548:,
545:h
539:(
527:{
502:}
493:w
487:,
484:h
478:(
466:{
349:}
346:}
343:;
337:=
331:.
325:;
319:=
313:.
304:{
301:)
292:,
283:(
277:;
268:;
259:{
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.