There are two ways of looking at every software product. One way is to translation - There are two ways of looking at every software product. One way is to Vietnamese how to say

There are two ways of looking at ev

There are two ways of looking at every software product. One way is to consider just the data, including local and global variables, arguments, dynamic data structures, and fi les. Another way of viewing a product is to consider just the operations performed on the data, that is, the procedures and the functions. In terms of this division of software into data and operations, the classical techniques essentially fall into two groups. Operation-oriented techniques primarily consider the operations of the product. The data are of secondary importance, considered only after the operations of the product have been analyzed in depth. Conversely, data-oriented techniques stress the data of the product; the operations are examined only within the framework of the data.
A fundamental weakness of both the data- and operation-oriented approaches is that data and operation are two sides of the same coin; a data item cannot change unless an operation is performed on it, and operations without associated data are equally meaningless. Therefore, techniques that give equal weight to data and operations are needed. It should not come as a surprise that the object-oriented techniques do this. After all, an object comprises both data and operations. Recall that an object is an instance of an abstract data type (more precisely, of a class). It therefore incorporates both data and the operations performed on those data, and the data and the operations are present in objects as equal partners. Similarly, in all the object-oriented techniques, data and operations are considered of the same importance; neither takes precedence over the other.
It is inaccurate to claim that data and operations are considered simultaneously in the techniques of the object-oriented paradigm. From the material on stepwise refi nement (Section 5.1), it is clear that sometimes data have to be stressed and other times operations are more critical. Overall, however, data and operations are given equal importance during the workflows of the object-oriented paradigm.
Many reasons are given in Chapter 1 and this chapter as to why the object-oriented paradigm is superior to the classical paradigm. Underlying all these reasons is that a welldesigned object, that is, an object with high cohesion and low coupling, models all the aspects of one physical entity. That is, there is a clear mapping between a real-world entity and the object that models it.
The details of how this is implemented are hidden; the only communication with an object is via messages sent to that object. As a result, objects essentially are independent units with a well-defined interface. Consequently, they can be maintained easily and safely; the chance of a regression fault is reduced. Furthermore, as will be explained in Chapter 8, objects are reusable, and this reusability is enhanced by the property of inheritance. Turning now to development using objects, it is safer to construct a large-scale product by combining these fundamental building blocks of software than to use the classical paradigm. Because objects essentially are independent components of a product, development of the product, as well as management of that development, is easier and hence less likely to induce faults.
All these aspects of the superiority of the object-oriented paradigm raise a question: If the classical paradigm is so inferior to the object-oriented paradigm, why has the classical paradigm had so much success? This can be explained by realizing that the classical paradigm was adopted at a time when software engineering was not widely practiced. Instead, software was simply “written.” For managers, the most important thing was for programmers to churn out lines of code. Little more than lip service was paid to the requirements and analysis (systems analysis ) of a product, and design was almost never performed. The code-and-fix model (Section 2.9.1) was typical of the techniques of the 1970s. Therefore, use of the classical paradigm exposed the majority of software developers to methodical techniques for the first time. Small wonder, then, that the so-called structured techniques of the classical paradigm led to major improvements in the software industry worldwide. However, as software products grew in size, inadequacies of the structured techniques started to become apparent, and the object-oriented paradigm was proposed as a better
alternative.
This, in turn, leads to another question: How do we know for certain that the objectoriented paradigm is superior to all other present-day techniques? No data are available that prove beyond all doubt that object-oriented technology is better than anything else currently available, and it is hard to imagine how such data could be obtained. The best we can do is to rely on the experiences of organizations that have adopted the object-oriented paradigm. Although not all reports are favorable, the majority (if not the overwhelming majority) attest that using the object-oriented paradigm is a wise decision.
For example, IBM has reported on three totally different projects that were developed using object-oriented technology [C apper, C olgate, H unter, and J ames, 1994]. In almost every respect, the object-oriented paradigm greatly outperformed the classical paradigm. Specifically, there were major decreases in the number of faults detected, far fewer change requests during both development and postdelivery maintenance that were not the result of unforeseeable business changes, and signifi cant increases in both adaptive and perfective m aintainability. Also improvement in usability was found, although not as large as the previous four improvements, and no meaningful difference in performance.
A survey of 150 experienced U.S. software developers was undertaken to determine their attitudes toward the object-oriented paradigm [Johnson , 2000]. The sample consisted of 96 developers who used the object-oriented paradigm and 54 who still used the classical paradigm to develop software. Both groups felt that the object-oriented paradigm is superior, although the positive attitude of the object-oriented group was signifi cantly stronger. Both groups essentially discounted the various weaknesses of the object-oriented paradigm.
Notwithstanding the many strengths of the object-oriented paradigm, some difficulties and problems indeed have been reported. A frequently reported problem concerns development effort and size. The first time anything new is done, it takes longer than on subsequent occasions; this initial period is sometimes referred to as the learning curve . But when the object-oriented paradigm is used for the fi rst time by an organization, it often takes longer than anticipated, even allowing for the learning curve, because the size of the product is larger than when structured techniques are used. This is particularly noticeable when the product has a graphical user interface (GUI) (see Section 10.14). Thereafter, things improve greatly. First, postdelivery maintenance costs are lower, reducing the overall lifetime cost of the product. Second, the next time that a new product is developed, some of the classes from the previous project can often be reused, further reducing software costs. This has been especially signifi cant when a GUI has been used for the fi rst time; much of the effort that went into the GUI can be recouped in subsequent products. Problems of inheritance are harder to solve.
1. A major reason for using inheritance is to create a new subclass that differs slightly from its parent class without affecting the parent class or any other ancestor class in the inheritance hierarchy. Conversely, however, once a product has been implemented, any change to an existing class directly affects all its descendants in the inheritance hierarchy; this often is referred to as the fragile base class problem . At the very least, the affected units have to be recompiled. In some cases, the methods of the relevant objects (instantiations of the affected subclasses) have to be recoded; this can be a nontrivial task. To minimize this problem, it is important that all classes be meticulously designed during the development process. This will reduce the ripple effect induced by a change to an existing class.
2. A second problem can result from a cavalier use of inheritance. Unless explicitly prevented, a subclass inherits all the attributes of its parent class(es). Usually, subclasses have additional attributes of their own. As a consequence, objects lower in the inheritance hierarchy quickly can get large, with resulting storage problems [Bruegge, Blythe, Jackson, and Shufelt, 1992]. One way to prevent this is to change the dictum “use inheritance wherever possible” to “use inheritance wherever appropriate.” In addition, if a descendent class does not need an attribute of an ancestor, then that attribute should be explicitly excluded.
3. A third group of problems stem from polymorphism and dynamic binding. These were described in Section 7.8.
4. Fourth, it is possible to write bad code in any language. However, it is easier to write bad code in an object-oriented language than in a classical language because object-oriented languages support a variety of constructs that, when misused, add unnecessary complexity to a software product. Therefore, when using the objectoriented paradigm, extra care needs to be taken to ensure that the code is always of the highest quality.
One final question is this: Someday might there be something better than the objectoriented paradigm? That is, in the future will a new technology appear in the space above the topmost arrow in Figure 7.28? Even its strongest proponents do not claim that the objectoriented paradigm is the ultimate answer to all software engineering problems. Furthermore, today’s software engineers are looking beyond objects to the next major breakthrough.
0/5000
From: -
To: -
Results (Vietnamese) 1: [Copy]
Copied!
Có hai cách để nhìn vào mỗi sản phẩm phần mềm. Một cách là để xem xét chỉ là các dữ liệu, bao gồm cả địa phương và toàn cầu biến, lập luận, cấu trúc dữ liệu động và fi les. Một cách khác để xem một sản phẩm là để xem xét chỉ là các hoạt động thực hiện trên các dữ liệu, có nghĩa là, các thủ tục và các chức năng. Trong điều khoản của đội này của phần mềm vào dữ liệu và các hoạt động, các kỹ thuật cổ điển về cơ bản rơi vào hai nhóm. Kỹ thuật theo định hướng hoạt động chủ yếu là xem xét các hoạt động của sản phẩm. Dữ liệu có tầm quan trọng thứ cấp, được coi là chỉ sau khi các hoạt động của sản phẩm đã được phân tích trong chiều sâu. Ngược lại, dữ liệu theo định hướng kỹ thuật căng thẳng các dữ liệu của sản phẩm; Các hoạt động được kiểm tra chỉ trong khuôn khổ của dữ liệu. Một điểm yếu cơ bản của cả hai phương pháp theo dữ liệu và định hướng hoạt động các là dữ liệu và hoạt động là hai bên trong cùng tiền xu; một mục dữ liệu không thể thay đổi trừ khi một hoạt động được thực hiện trên nó, và các hoạt động mà không có liên kết dữ liệu là vô nghĩa như nhau. Do đó, kỹ thuật mà cung cấp tương đương trọng lượng cho dữ liệu và các hoạt động là cần thiết. Nó không nên đến như là một bất ngờ rằng kỹ thuật hướng đối tượng thực hiện việc này. Sau khi tất cả, một đối tượng bao gồm cả dữ liệu và các hoạt động. Nhớ lại rằng một đối tượng là một ví dụ của kiểu dữ liệu trừu tượng (chính xác hơn, trong một lớp học). Nó do đó kết hợp dữ liệu và các hoạt động thực hiện trên những dữ liệu, và các dữ liệu và các hoạt động có mặt trong các đối tượng như là đối tác bình đẳng. Tương tự như vậy, trong tất cả các đối tượng theo định hướng kỹ thuật, dữ liệu và các hoạt động được coi là của cùng một tầm quan trọng; không sẽ ưu tiên hơn khác. Nó là không chính xác để yêu cầu bồi thường đó dữ liệu và hoạt động được coi là đồng thời trong các kỹ thuật của mô hình hướng đối tượng. Từ các tài liệu trên stepwise refi nement (phần 5.1), nó là rõ ràng rằng đôi khi dữ liệu đã là nhấn mạnh và khác thời gian hoạt động là quan trọng hơn. Nhìn chung, Tuy nhiên, dữ liệu và các hoạt động được cho tầm quan trọng tương đương trong quy trình công việc của các mô hình hướng đối tượng. Many reasons are given in Chapter 1 and this chapter as to why the object-oriented paradigm is superior to the classical paradigm. Underlying all these reasons is that a welldesigned object, that is, an object with high cohesion and low coupling, models all the aspects of one physical entity. That is, there is a clear mapping between a real-world entity and the object that models it. The details of how this is implemented are hidden; the only communication with an object is via messages sent to that object. As a result, objects essentially are independent units with a well-defined interface. Consequently, they can be maintained easily and safely; the chance of a regression fault is reduced. Furthermore, as will be explained in Chapter 8, objects are reusable, and this reusability is enhanced by the property of inheritance. Turning now to development using objects, it is safer to construct a large-scale product by combining these fundamental building blocks of software than to use the classical paradigm. Because objects essentially are independent components of a product, development of the product, as well as management of that development, is easier and hence less likely to induce faults. All these aspects of the superiority of the object-oriented paradigm raise a question: If the classical paradigm is so inferior to the object-oriented paradigm, why has the classical paradigm had so much success? This can be explained by realizing that the classical paradigm was adopted at a time when software engineering was not widely practiced. Instead, software was simply “written.” For managers, the most important thing was for programmers to churn out lines of code. Little more than lip service was paid to the requirements and analysis (systems analysis ) of a product, and design was almost never performed. The code-and-fix model (Section 2.9.1) was typical of the techniques of the 1970s. Therefore, use of the classical paradigm exposed the majority of software developers to methodical techniques for the first time. Small wonder, then, that the so-called structured techniques of the classical paradigm led to major improvements in the software industry worldwide. However, as software products grew in size, inadequacies of the structured techniques started to become apparent, and the object-oriented paradigm was proposed as a better alternative. This, in turn, leads to another question: How do we know for certain that the objectoriented paradigm is superior to all other present-day techniques? No data are available that prove beyond all doubt that object-oriented technology is better than anything else currently available, and it is hard to imagine how such data could be obtained. The best we can do is to rely on the experiences of organizations that have adopted the object-oriented paradigm. Although not all reports are favorable, the majority (if not the overwhelming majority) attest that using the object-oriented paradigm is a wise decision. For example, IBM has reported on three totally different projects that were developed using object-oriented technology [C apper, C olgate, H unter, and J ames, 1994]. In almost every respect, the object-oriented paradigm greatly outperformed the classical paradigm. Specifically, there were major decreases in the number of faults detected, far fewer change requests during both development and postdelivery maintenance that were not the result of unforeseeable business changes, and signifi cant increases in both adaptive and perfective m aintainability. Also improvement in usability was found, although not as large as the previous four improvements, and no meaningful difference in performance. A survey of 150 experienced U.S. software developers was undertaken to determine their attitudes toward the object-oriented paradigm [Johnson , 2000]. The sample consisted of 96 developers who used the object-oriented paradigm and 54 who still used the classical paradigm to develop software. Both groups felt that the object-oriented paradigm is superior, although the positive attitude of the object-oriented group was signifi cantly stronger. Both groups essentially discounted the various weaknesses of the object-oriented paradigm. Notwithstanding the many strengths of the object-oriented paradigm, some difficulties and problems indeed have been reported. A frequently reported problem concerns development effort and size. The first time anything new is done, it takes longer than on subsequent occasions; this initial period is sometimes referred to as the learning curve . But when the object-oriented paradigm is used for the fi rst time by an organization, it often takes longer than anticipated, even allowing for the learning curve, because the size of the product is larger than when structured techniques are used. This is particularly noticeable when the product has a graphical user interface (GUI) (see Section 10.14). Thereafter, things improve greatly. First, postdelivery maintenance costs are lower, reducing the overall lifetime cost of the product. Second, the next time that a new product is developed, some of the classes from the previous project can often be reused, further reducing software costs. This has been especially signifi cant when a GUI has been used for the fi rst time; much of the effort that went into the GUI can be recouped in subsequent products. Problems of inheritance are harder to solve.
1. A major reason for using inheritance is to create a new subclass that differs slightly from its parent class without affecting the parent class or any other ancestor class in the inheritance hierarchy. Conversely, however, once a product has been implemented, any change to an existing class directly affects all its descendants in the inheritance hierarchy; this often is referred to as the fragile base class problem . At the very least, the affected units have to be recompiled. In some cases, the methods of the relevant objects (instantiations of the affected subclasses) have to be recoded; this can be a nontrivial task. To minimize this problem, it is important that all classes be meticulously designed during the development process. This will reduce the ripple effect induced by a change to an existing class.
2. A second problem can result from a cavalier use of inheritance. Unless explicitly prevented, a subclass inherits all the attributes of its parent class(es). Usually, subclasses have additional attributes of their own. As a consequence, objects lower in the inheritance hierarchy quickly can get large, with resulting storage problems [Bruegge, Blythe, Jackson, and Shufelt, 1992]. One way to prevent this is to change the dictum “use inheritance wherever possible” to “use inheritance wherever appropriate.” In addition, if a descendent class does not need an attribute of an ancestor, then that attribute should be explicitly excluded.
3. A third group of problems stem from polymorphism and dynamic binding. These were described in Section 7.8.
4. Fourth, it is possible to write bad code in any language. However, it is easier to write bad code in an object-oriented language than in a classical language because object-oriented languages support a variety of constructs that, when misused, add unnecessary complexity to a software product. Therefore, when using the objectoriented paradigm, extra care needs to be taken to ensure that the code is always of the highest quality.
One final question is this: Someday might there be something better than the objectoriented paradigm? That is, in the future will a new technology appear in the space above the topmost arrow in Figure 7.28? Even its strongest proponents do not claim that the objectoriented paradigm is the ultimate answer to all software engineering problems. Furthermore, today’s software engineers are looking beyond objects to the next major breakthrough.
Being translated, please wait..
Results (Vietnamese) 2:[Copy]
Copied!
Có hai cách nhìn mỗi sản phẩm phần mềm. Một cách là để xem xét chỉ là dữ liệu, bao gồm cả các biến địa phương và toàn cầu, lập luận, cấu trúc dữ liệu động, và fi les. Một cách khác để xem một sản phẩm là để xem xét chỉ các hoạt động thực hiện trên dữ liệu, có nghĩa là, các thủ tục và các chức năng. Trong điều kiện của bộ phận này của phần mềm vào dữ liệu và các hoạt động, các kỹ thuật cổ điển chủ yếu rơi vào hai nhóm. Kỹ thuật hoạt động theo định hướng chủ yếu xem xét các hoạt động của sản phẩm. Các dữ liệu có tầm quan trọng thứ yếu, chỉ xem xét sau khi các hoạt động của sản phẩm đã được phân tích theo chiều sâu. Ngược lại, các kỹ thuật định hướng dữ liệu nhấn mạnh các dữ liệu của sản phẩm; các hoạt động được kiểm tra chỉ trong khuôn khổ của các dữ liệu.
Một điểm yếu cơ bản của cả hai phương pháp tiếp cận dữ liệu và hoạt động theo định hướng là dữ liệu và hoạt động là hai mặt của cùng một đồng tiền; một mục dữ liệu không thể thay đổi trừ khi một hoạt động được thực hiện trên nó, và các hoạt động mà không có dữ liệu liên quan là như nhau vô nghĩa. Vì vậy, kỹ thuật này đem lại cho cân bằng với dữ liệu và các hoạt động cần thiết. Nó không phải là một bất ngờ rằng các kỹ thuật hướng đối tượng làm điều này. Sau khi tất cả, một đối tượng bao gồm cả dữ liệu và các hoạt động. Nhớ lại rằng một đối tượng là một thể hiện của một kiểu dữ liệu trừu tượng (chính xác hơn, của một lớp). Do đó nó kết hợp cả dữ liệu và các hoạt động thực hiện trên những dữ liệu, và các dữ liệu và các hoạt động có mặt trong các đối tượng như các đối tác bình đẳng. Tương tự như vậy, trong tất cả các kỹ thuật, dữ liệu hướng đối tượng và các hoạt động được coi là có tầm quan trọng như nhau; không được ưu tiên hơn người khác.
Đó là không chính xác để khẳng định rằng dữ liệu và các hoạt động được xem xét đồng thời trong các kỹ thuật của mô hình hướng đối tượng. Từ các nguyên liệu trên theo từng bước Refi nement (mục 5.1), nó là rõ ràng rằng đôi khi dữ liệu cần phải được nhấn mạnh và lần khác là hoạt động quan trọng hơn. Nhìn chung, tuy nhiên, dữ liệu và các hoạt động được cho tầm quan trọng như nhau trong các quy trình công việc của mô hình hướng đối tượng.
Nhiều lý do được nêu trong Chương 1 và chương này là tại sao các mô hình hướng đối tượng là cấp trên để các mô hình cổ điển. Nằm dưới tất cả những lý do này là một đối tượng welldesigned, đó là, một đối tượng với sự gắn kết cao và thấp khớp nối, mô hình tất cả các khía cạnh của một thực thể vật lý. Đó là, có một bản đồ rõ ràng giữa một thực thể trong thế giới thực và các đối tượng mà mô hình đó.
Các chi tiết về cách thức này được thực hiện là ẩn; các thông tin liên lạc chỉ với một đối tượng là thông qua tin nhắn gửi đến đối tượng đó. Kết quả là, các đối tượng chủ yếu là các đơn vị độc lập với một giao diện được xác định rõ. Do đó, họ có thể được duy trì một cách dễ dàng và an toàn; cơ hội của một lỗi hồi quy được giảm. Hơn nữa, như sẽ được giải thích trong Chương 8, các đối tượng được tái sử dụng, tái sử dụng và điều này được tăng cường bởi các tài sản thừa kế. Quay sang phát triển bằng cách sử dụng các đối tượng, nó là an toàn hơn để xây dựng một sản phẩm quy mô lớn bằng cách kết hợp các khối xây dựng cơ bản của phần mềm hơn để sử dụng các mô hình cổ điển. Bởi vì đối tượng chủ yếu là các thành phần độc lập của một sản phẩm, phát triển sản phẩm, cũng như quản lý của sự phát triển đó, là dễ dàng hơn và do đó ít có khả năng gây ra lỗi.
Tất cả những khía cạnh của tính ưu việt của mô hình hướng đối tượng ra một câu hỏi: Nếu các mô hình cổ điển như vậy là kém hơn so với các mô hình hướng đối tượng, tại sao các mô hình cổ điển được rất nhiều thành công? Điều này có thể được giải thích bằng cách nhận thức rằng các mô hình cổ điển được thông qua tại một thời điểm kỹ thuật phần mềm chưa được thực hiện rộng rãi. Thay vào đó, phần mềm đã được chỉ đơn giản là "viết". Đối với các nhà quản lý, điều quan trọng nhất là cho các lập trình viên phải tung ra những dòng mã. Ít dịch vụ hơn môi đã được trả cho các yêu cầu và phân tích (phân tích hệ thống) của một sản phẩm, và thiết kế gần như không bao giờ thực hiện. Các mô hình mã và sửa chữa (mục 2.9.1) là điển hình của các kỹ thuật của những năm 1970. Vì vậy, việc sử dụng các mô hình cổ điển tiếp xúc với phần lớn các nhà phát triển phần mềm để có phương pháp kỹ thuật lần đầu tiên. Thắc mắc nhỏ, sau đó, cái gọi là kỹ thuật cấu trúc của mô hình cổ điển dẫn đến những cải tiến lớn trong ngành công nghiệp phần mềm trên toàn thế giới. Tuy nhiên, như các sản phẩm phần mềm đã tăng trưởng về kích thước, bất cập của các kỹ thuật cấu trúc bắt đầu trở nên rõ ràng, và các mô hình hướng đối tượng đã được đề xuất như là một tốt hơn
thay thế.
Điều này, đến lượt nó, dẫn đến một câu hỏi: Làm thế nào để chúng ta biết chắc chắn rằng mô objectoriented là vượt trội so với tất cả các kỹ thuật ngày nay khác? Không có số liệu chứng minh hơn tất cả mọi nghi ngờ rằng công nghệ hướng đối tượng là tốt hơn so với bất cứ điều gì khác hiện có, và thật khó để tưởng tượng làm thế nào dữ liệu đó có thể thu được. Điều tốt nhất chúng tôi có thể làm là dựa trên kinh nghiệm của các tổ chức đã áp dụng mô hình hướng đối tượng. Mặc dù không phải tất cả các báo cáo được thuận lợi, đa số (nếu không phải là đa số) chứng thực rằng bằng cách sử dụng mô hình hướng đối tượng là một quyết định khôn ngoan.
Ví dụ, IBM đã đưa tin về ba dự án hoàn toàn khác nhau đã được phát triển bằng cách sử dụng công nghệ hướng đối tượng [C apper, C olgate, H unter, và J ames, 1994]. Trong hầu hết mọi khía cạnh, các mô hình hướng đối tượng rất vượt trội so với mô hình cổ điển. Cụ thể, đã có giảm lớn trong số các lỗi được phát hiện, yêu cầu thay đổi rất ít trong thời gian cả hai phát triển và bảo trì postdelivery đó không là kết quả của những thay đổi kinh doanh không lường trước được, và signifi tăng cant trong cả thích ứng và hoàn bị m aintainability. Cũng cải thiện khả năng sử dụng được tìm thấy, mặc dù không lớn như bốn cải tiến trước đó, và không có sự khác biệt có ý nghĩa trong hoạt động.
Một cuộc khảo sát của hơn 150 nhà phát triển phần mềm Mỹ đã được thực hiện để xác định thái độ của họ đối với các mô hình hướng đối tượng [Johnson, 2000]. Các mẫu bao gồm 96 nhà phát triển đã sử dụng các mô hình hướng đối tượng và 54 người vẫn còn sử dụng các mô hình cổ điển để phát triển phần mềm. Cả hai nhóm đều cảm thấy rằng các mô hình hướng đối tượng là cấp trên, mặc dù thái độ tích cực của các nhóm đối tượng là đáng signifi mạnh. Cả hai nhóm cơ bản giảm giá các điểm yếu khác nhau về mô hình hướng đối tượng.
Mặc dù có nhiều ưu điểm của mô hình hướng đối tượng, một số khó khăn và các vấn đề thực sự đã được báo cáo. Một vấn đề thường xuyên báo cáo liên quan đến nỗ lực phát triển và kích thước. Lần đầu tiên bất cứ điều gì mới được thực hiện, nó mất nhiều thời gian hơn vào những dịp tiếp theo; thời kỳ đầu này đôi khi được gọi là các đường cong học tập. Nhưng khi các mô hình hướng đối tượng được sử dụng lần đầu tiên kinh bởi một tổ chức, nó thường mất nhiều thời gian hơn dự kiến, thậm chí cho phép cho các đường cong học tập, bởi vì kích thước của sản phẩm là lớn hơn khi các kỹ thuật cấu trúc được sử dụng. Điều này đặc biệt đáng chú ý khi những sản phẩm có một giao diện người dùng đồ họa (GUI) (xem Phần 10,14). Sau đó, mọi sự cải thiện đáng kể. Đầu tiên, chi phí bảo trì postdelivery thấp hơn, giảm chi phí đời tổng thể của sản phẩm. Thứ hai, thời gian tiếp theo mà một sản phẩm mới được phát triển, một số các lớp học từ các dự án trước đây thường có thể được tái sử dụng, tiếp tục giảm chi phí phần mềm. Điều này đã không thể đặc biệt là signifi khi một giao diện đã được sử dụng lần đầu tiên kinh; nhiều nỗ lực đó đã đi vào GUI có thể được hoàn lại trong các sản phẩm tiếp theo. Các vấn đề về thừa kế là khó khăn hơn để giải quyết.
1. Một lý do chính để sử dụng thừa kế là tạo ra một lớp con mới hơi khác từ lớp cha của nó không ảnh hưởng tới lớp cha hay bất kỳ lớp tổ tiên khác trong hệ thống phân cấp thừa kế. Ngược lại, tuy nhiên, một khi sản phẩm đã được thực hiện, bất kỳ thay đổi để một lớp học hiện trực tiếp ảnh hưởng đến tất cả các hậu duệ của nó trong hệ thống phân cấp thừa kế; này thường được gọi là các vấn đề lớp cơ sở mong manh. Ít nhất, các đơn vị bị ảnh hưởng phải được biên dịch lại. Trong một số trường hợp, các phương pháp của các đối tượng có liên quan (sự khởi tạo của lớp con bị ảnh hưởng) phải được mã hóa lại; điều này có thể là một nhiệm vụ không tầm thường. Để giảm thiểu vấn đề này, điều quan trọng là tất cả các lớp học được thiết kế tỉ mỉ trong quá trình phát triển. Điều này sẽ làm giảm hiệu ứng gợn sóng gây ra bởi một sự thay đổi đến một lớp học hiện có.
2. Vấn đề thứ hai có thể là kết quả từ việc sử dụng ung dung của thừa kế. Trừ khi ngăn chặn một cách rõ ràng, một lớp con thừa hưởng tất cả các thuộc tính của lớp cha của nó (es). Thông thường, lớp con có thuộc tính bổ sung của riêng mình. Như một hệ quả, các đối tượng thấp hơn trong hệ thống phân cấp thừa kế có thể nhanh chóng có được lớn, với kết quả là vấn đề lưu trữ [Bruegge, Blythe, Jackson, và Shufelt, 1992]. Một cách để ngăn chặn điều này là để thay đổi câu châm ngôn "sử dụng thừa kế bất cứ nơi nào có thể" để "sử dụng thừa kế bất cứ nơi nào thích hợp." Ngoài ra, nếu một lớp hậu duệ không cần một thuộc tính của một tổ tiên, sau đó thuộc tính đó sẽ bị loại trừ một cách rõ ràng.
3. Nhóm thứ ba của vấn đề xuất phát từ tính đa hình và năng động ràng buộc. Chúng được mô tả trong Phần 7.8.
4. Thứ tư, nó có thể viết mã xấu trong bất kỳ ngôn ngữ. Tuy nhiên, nó là dễ dàng hơn để viết mã xấu trong một ngôn ngữ hướng đối tượng hơn trong một ngôn ngữ cổ điển bởi vì ngôn ngữ hướng đối tượng hỗ trợ một loạt các cấu trúc đó, khi sử dụng sai, thêm phức tạp không cần thiết cho một sản phẩm phần mềm. . Do đó, khi sử dụng các mô hình objectoriented, thêm chăm sóc cần được thực hiện để đảm bảo rằng mã luôn luôn có chất lượng cao nhất là
Một câu hỏi cuối cùng là thế này: Một ngày nào đó có thể có được một cái gì đó tốt hơn so với các mô hình objectoriented? Đó là, trong tương lai sẽ là một công nghệ mới xuất hiện trong không gian phía trên mũi tên trên cùng trong Hình 7.28? Ngay cả những người ủng hộ mạnh mẽ của nó không cho rằng mô hình objectoriented là câu trả lời cuối cùng cho tất cả các vấn đề kỹ thuật phần mềm. Hơn nữa, các kỹ sư phần mềm ngày nay đang tìm kiếm vượt ra ngoài các đối tượng đến bước đột phá lớn tiếp theo.
Being translated, please wait..
 
Other languages
The translation tool support: Afrikaans, Albanian, Amharic, Arabic, Armenian, Azerbaijani, Basque, Belarusian, Bengali, Bosnian, Bulgarian, Catalan, Cebuano, Chichewa, Chinese, Chinese Traditional, Corsican, Croatian, Czech, Danish, Detect language, Dutch, English, Esperanto, Estonian, Filipino, Finnish, French, Frisian, Galician, Georgian, German, Greek, Gujarati, Haitian Creole, Hausa, Hawaiian, Hebrew, Hindi, Hmong, Hungarian, Icelandic, Igbo, Indonesian, Irish, Italian, Japanese, Javanese, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Korean, Kurdish (Kurmanji), Kyrgyz, Lao, Latin, Latvian, Lithuanian, Luxembourgish, Macedonian, Malagasy, Malay, Malayalam, Maltese, Maori, Marathi, Mongolian, Myanmar (Burmese), Nepali, Norwegian, Odia (Oriya), Pashto, Persian, Polish, Portuguese, Punjabi, Romanian, Russian, Samoan, Scots Gaelic, Serbian, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenian, Somali, Spanish, Sundanese, Swahili, Swedish, Tajik, Tamil, Tatar, Telugu, Thai, Turkish, Turkmen, Ukrainian, Urdu, Uyghur, Uzbek, Vietnamese, Welsh, Xhosa, Yiddish, Yoruba, Zulu, Language translation.

Copyright ©2024 I Love Translation. All reserved.

E-mail: