Xem kết quả thăm dò: Bạn thấy topic này thế nào

  • Hữu ích

    474 94.23%
  • Bình thường

    18 3.58%
  • Tồi

    1 0.20%
  • Cực kỳ tồi

    10 1.99%
Bạn không thể bỏ phiếu ở thăm dò này
Số người bỏ phiếu 503.
Trang 6 trên tổng số 6 Đầu tiênĐầu tiên ... 456
Từ 51 tới 60 trên tổng số 60 kết quả

Đề tài: Hướng dẫn lập trình hướng đối tượng với C++

  1. #51
    Ngày gia nhập
    05 2009
    Bài viết
    2

    Mặc định Rất là hay.

    Cảm ơn vì những gì bạn chia sẻ.

  2. #52
    Ngày gia nhập
    05 2012
    Bài viết
    1

    Khai quật topic cho các bạn nhập môn

  3. #53
    Ngày gia nhập
    01 2013
    Bài viết
    1,477

    Có 1 chỗ xứng đáng facepalm:
    Phụ thuộc nặng nề vào cấu trúc dữ liệu và thuật toán: minh chứng cho điều này là câu nói nổi tiếng của bác Niklaus Wirth (creator of Pascal): Algorithms + Data Structures = Programs. Cũng xin nói thêm mô hình lập trình hướng cấu trúc được dựa trên mô hình toán học của Bohm và Guiseppe (nói thật là mình không biết hai bác này ), theo đó, một chương trình máy tính đều có thể viết dựa trên ba cấu trúc là: tuần tự (sequence), lựa chọn hay rẽ nhánh (selection) và lặp (repetition). Vì vậy một chương trình được xem là một chuỗi các hành động liên tiếp để đi đến kết quả cuối cùng. Và việc thiết kế chương trình phụ thuộc nặng nề vào việc dùng giải thuật gì và tổ chức dữ liệu như thế nào. Điều này làm cho việc thiết kế là rất “không tự nhiên” vì nó làm cho quá trình thiết kế phụ thuộc vào cài đặt và khi quy mô chương trình lớn dần lên sẽ rất khó triển khai. Đồng thời khi có thay đổi về cấu trúc dữ liệu hoặc nâng cấp chương trình gần như ta phải viết lại hầu hết các hàm liên quan và sửa đổi lại thuật toán vì mỗi cấu trúc dữ liệu chỉ phù hợp với một số thuật toán nhất định. Đây là hạn chế thứ tư.
    Cái này bị encapsulate lại rồi chứ ko ai phơi ra làm gì.

  4. #54
    Ngày gia nhập
    10 2014
    Bài viết
    1

    em mới bước vào phần đối tượng này và thầy em càng nói em càng loạn @@! may quá tìm được thread này nhớ vớ được vàng, càng đọc càng thấm ^^! cảm ơn bác First_pace đã cứu vớt cuộc đời em =)))))))))))))))))))

  5. #55
    Ngày gia nhập
    01 2015
    Nơi ở
    Hà Nội
    Bài viết
    25

    Bài viết quá tuyệt. Hơn hẳn những quyển giáo trình khô khan. First_Pace quả là một cao thủ. Có thể cho tại hạ xin fb để tiện lĩnh hội kiến thức uyên thâm của cao nhân ko?

  6. #56
    Ngày gia nhập
    09 2014
    Bài viết
    1

    Mặc định Hướng dẫn lập trình hướng đối tượng với C++

    cảm ơn bạn rát nhiều,đọc rất dễ hiểu ^^

  7. #57
    Ngày gia nhập
    06 2012
    Nơi ở
    Nam Định
    Bài viết
    12

    Cám ơn chủ topic. Bài viết rất hay chi tiết cụ thể.

  8. #58
    Ngày gia nhập
    05 2016
    Bài viết
    7

    bài viết của chủ topic rất là hay ạ! Bây giờ em mới đọc đến thì có phải là trễ rồi không? Hic
    Vote nhiệt tình cho bác chủ topic luôn

  9. #59
    Ngày gia nhập
    02 2016
    Bài viết
    298

    2. extern

    Trong thực tế các chương trình thường có quy mô lớn. Vì vậy người ta thường phải chia chương trình thành các files riêng rẽ , nhỏ hơn. Khi có một thay đổi nhỏ nào đó xảy ra thì ta không phải compile lại cả chương trình mà chỉ cần compile lại những file có thay đổi. Trong một chương trình lớn bao gồm nhiều files, nếu chương trình có sử dụng biến toàn cục thì các files phải “biết” các biến toàn cục này. Tuy nhiên ta không thể khai báo lại các biến toàn cục trong từng file. Vì như vậy trình liên kết (linker) không biết link biến nào vì có nhiều bản sao của biến toàn cục và sẽ báo lỗi. C++ cung cấp giải pháp đó là khai báo biến toàn cục trong một file và sử dụng từ khóa extern.

    Khi khai báo một biến là extern thì nó báo cho trình biên dịch biết kiểu (type) và tên (name) của biến toàn cục, nhưng thực sự cấp phát bộ nhớ cho biến, tức là không thực sự tạo ra biến. Ta sẽ khai báo nó ở đâu đó trrong chương trình và mỗi khi gặp biến này, linker tự động tìm đến biến “thực sự” để lấy dữ liệu. Ví dụ chương trình của chúng ta gồm hai files là fileA, fileB và được khai báo như sau:

    C++ Code:
    Select All | Show/Hide

    File A:
    double global_var; // biến toàn cục thực sự
    int main(){
    // thân hàm main
    }

    File B:
    extern double global_var; // thông báo global_var đã được khai báo trong một file nào đó
    demo_func(){
    // thân hàm demo_func
    }

    Một ứng dụng khác của extern đó là giúp ta có thể sử dụng biến toàn cục trước khi định nghĩa chúng. Thông thường ta thường khai báo các biến toàn cục ở đầu chương trình, nhưng điều này là không cần thiết. Khi một hàm nào đó cần sử dụng biến toàn cục, ta có thể khai báo biến toàn cục trong hàm với từ khóa extern, rồi sau đó thích đặt biến toàn cục ở đâu cũng được. Ví dụ chương trình sau:
    C++ Code:
    Select All | Show/Hide

    int main(){
    // thân hàm main
    }
    void func(){
    extern int x; // khai báo extern
    cout << “ x is global variable and x= ” << x << endl;
    }
    // định nghĩa biến toàn cục cuối chương trình
    int x=100;

    Nói túm lại có hai cách sử dụng của extern: thứ nhất, dùng để thông báo biến toàn cục đã được định nghĩa trong một file nào đó của một chương trình nhiều files. Thứ hai, cho phép sử dụng biến trước khi định nghĩa chính thức cho biến.

    Tuy nhiên có một điều cần chú ý. Nếu trong khai báo extern ta khởi tạo giá trị cho biến thì khai báo (declaration) đó sẽ trở thành định nghĩa (definition). Khai báo extern thì có thể có nhiều, nhưng định nghĩa thì chỉ có một nên sẽ có thể dẫn đến lỗi. Vì vậy khi sử dụng cần phải chú ý.
    Bài này chủ thớt lấy tiêu đề OOP thì đáng lẽ nên chú trọng OOP thôi. Không nên đi quá xa vào các vấn đề khác như căn bản lập trình.
    Giải thích về extern như thế không hẳn đúng.

    extern là cách giải quyết cổ xưa cho các code quá lớn, cần phải tách rời ra từng hàm.
    Khi tách rời ra từng hàm, những biến mà các hàm này dùng chung bắt buôc phải chuyền cho nhau. Nếu phải chuyền hằng chục, thậm chí hằng trăm biến qua tham số thì vừa lê thê vừa tốn năng lượng (mỗi tham số đều phải copy vào stack). Vì vậy ngừoi ta bắt buộc phải dùng biến toàn cục.
    Nhưng nếu số hàm quá nhiều thì file trở nên rất lớn. Ngày xưa máy cổ điển không có những IDE làm việc một cách hữu hiệu với file lớn cho nên người ta lại phải tách ra thành nhiều files. Và extern chính là được sinh ra để giải quyết vấn đề chia sẻ biến toàn cục giữa những files này. Tren ứng dụng thực tế, các khai báo biến extern được cho vào các file headers. Các file code có hàm sử dụng nhóm extern nào thì cứ việc include header đó. Đương nhiên trong nhóm phải có 1 thằng (và chỉ 1 thằng) chứa code định nghĩa và gán trị khởi đầu.
    Khi compiler đọc thấy biến extern thì nó tự động giành chỗ nối cho các biến này. Khi đọc file chứa định nghĩa thì nó mới giành chỗ trong bộ nhớ.

    Phải hiểu về lịch sử biến extern như thế, các bạn mới thấy là nó chỉ dùng cho C. Đối với C++ và OOP thì extern trở nên thừa, không còn sử dụng nữa.
    (có một sự gần giống nhau giữa extern và thuộc tính public static của class)

  10. #60
    Ngày gia nhập
    03 2017
    Bài viết
    5

    Trích dẫn Nguyên bản được gửi bởi NguNhuheo Xem bài viết
    Bài này chủ thớt lấy tiêu đề OOP thì đáng lẽ nên chú trọng OOP thôi. Không nên đi quá xa vào các vấn đề khác như căn bản lập trình.
    Giải thích về extern như thế không hẳn đúng.

    extern là cách giải quyết cổ xưa cho các code quá lớn, cần phải tách rời ra từng hàm.
    Khi tách rời ra từng hàm, những biến mà các hàm này dùng chung bắt buôc phải chuyền cho nhau. Nếu phải chuyền hằng chục, thậm chí hằng trăm biến qua tham số thì vừa lê thê vừa tốn năng lượng (mỗi tham số đều phải copy vào stack). Vì vậy ngừoi ta bắt buộc phải dùng biến toàn cục.
    Nhưng nếu số hàm quá nhiều thì file trở nên rất lớn. Ngày xưa máy cổ điển không có những IDE làm việc một cách hữu hiệu với file lớn cho nên người ta lại phải tách ra thành nhiều files. Và extern chính là được sinh ra để giải quyết vấn đề chia sẻ biến toàn cục giữa những files này. Tren ứng dụng thực tế, các khai báo biến extern được cho vào các file headers. Các file code có hàm sử dụng nhóm extern nào thì cứ việc include header đó. Đương nhiên trong nhóm phải có 1 thằng (và chỉ 1 thằng) chứa code định nghĩa và gán trị khởi đầu.
    Khi compiler đọc thấy biến extern thì nó tự động giành chỗ nối cho các biến này. Khi đọc file chứa định nghĩa thì nó mới giành chỗ trong bộ nhớ.

    Phải hiểu về lịch sử biến extern như thế, các bạn mới thấy là nó chỉ dùng cho C. Đối với C++ và OOP thì extern trở nên thừa, không còn sử dụng nữa.
    (có một sự gần giống nhau giữa extern và thuộc tính public static của class)
    Chính xác. Cách giải thích của bạn kia quá lởm.
    Những lý do mà bạn đó nêu ra là đúng như không phải lịch sử, lý do chính để cho extern ra đời.

Trang 6 trên tổng số 6 Đầu tiênĐầu tiên ... 456

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn