Đề tài Trình bày điểm giống nhau, khác nhau giữa C++, C#, Java
Đề bài:
Trình bày điểm giống nhau , khác nhau giữa C++ , C#, Java ở những điểm
sau:
o Chú thích
o Hằng
o Kiểu dữ liệu
o Kiểm tra kiểu, đổi kiểu
o Không gian tên
o Quản lý và cấp phát bộ nhớ
o Hàm trùng tên
o Nhập xuất
Bài làm:
I. Chú thích:
Một chương trình cần phải có chú thích về các đoạn mã được viết. Các
đoạn chú thích này sẽ không được biên dịch cũng như không tham gia vào
chương trình. Mục đích chính của nó là làm cho chương trình viết được rõ
ràng dễ hiểu. Do vậy những dòng chú thích sẽ cần thiết cho C++, C# cũng
như Java
1
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI THU HOẠCH SỐ 1
Đề bài:
Trình bày điểm giống nhau , khác nhau giữa C++ , C#, Java ở những điểm
sau:
o Chú thích
o Hằng
o Kiểu dữ liệu
o Kiểm tra kiểu, đổi kiểu
o Không gian tên
o Quản lý và cấp phát bộ nhớ
o Hàm trùng tên
o Nhập xuất
Bài làm:
I. Chú thích:
Một chương trình cần phải có chú thích về các đoạn mã được viết. Các
đoạn chú thích này sẽ không được biên dịch cũng như không tham gia vào
chương trình. Mục đích chính của nó là làm cho chương trình viết được rõ
ràng dễ hiểu. Do vậy những dòng chú thích sẽ cần thiết cho C++, C# cũng
như Java
Giống nhau:
Trong C++, C# , Java đều có hai kiểu chú thích cơ bản là chú thích trên
một dòng và chú thích trên nhiếu dòng.
+Chú thích trên một dòng: bắt đầu bằng ký tự “//”.Khi trình biên dịch gặp
ký tự này thì sẽ bỏ qua dòng đó.
Vd:
// Đây là ghi chú trên một dòng
+Chú thích trên nhiều dòng: bắt đầu khai báo bằng cặp kí tự
“/*” trước chú thích và kết thúc chú thích bằng “/*”. Kiểu chú thích
này có thể có 1 hay nhiều dòng
Vd:
/* Bắt đầu ghi chú trên nhiều dòng
Vẫn còn trong ghi chú
Kết thúc ghi chú bằng */
Khác nhau:
2
_Trong C++: chỉ có hai kiểu chú thích cơ bản như ơ trên.
_Trong C#: ngoài hai kiểu trên còn hỗ trợ thêm kiểu thứ ba là kiểu chứa
các ra tập tin XML khi biên dịch để tạo sưu liệu cho mã nguồn. Trong
kiểu thứ 3 này cũng có 2 kiểu chú định dạng XML nhằm xuất thích là
chú thích trên 1 dòng ( bắt đầu bằng “ /// ”) và chú thích trên nhiều dòng (
bắt đầu bằng “ /** ” và kết thúc khối chú thích bằng “ */ ” ) theo chuẩn
XML.
Vd:
/// XML một dòng chú thích theo chuẩn XML
/** XML nhiều dòng chú
thích theo chuẩn XML */
_Trong Java: giống như trong C#, Java còn có thêm kiểu thứ 3 là chú
thích trong tư liệu.Đây là loại chú thích đặc biệt được đặt vào những chỗ
thích hợp trong chương trình để javadoc ( công cụ sinh tài liệu ) có thể
đọc và sử dụng để tạo ra tư liệu dạng HTML cho chương trình. Phần chú
thích trong tư liệu được bắt đầu bằng “/**” và kết thúc bằng “*/”. Chúng
thường được đặt trước phần định nghĩa các lớp interface, phương thức và
biến.
II. Hằng:
Giống nhau:
Trong C++, C#, Java, hằng được định nghĩa như là một biểu thức mang
một giá trị xác định. Khi lập trình ta phải đảm bảo giá trị của nó không
được thay đổi trong suốt chương trình.
Khác nhau:
_ Trong C++: có các giá trị hằng như: hằng nguyên, hằng long, hằng dấu
phẩy động, hằng kí tự , hằng xâu kí tự. ta có thể khai báo hằng như sau:
const kiểu hằng = giá trị
vd: const int MAXLINE=100
trong C++ còn có cách thứ hai để khai báo 1 hằng đó là sử dụng chỉ thị
tiền xử lý define : #define hằng chuỗi_thể_hiện_giá_ trị
_ Trong C#: Hằng được phân thành ba loại: giá trị hằng (literal),biểu
tượng hằng(symbolic constants), kiểu liệt kê(enumerations).
_Trong Java: Trong java cách duy nhất để tạo ra một hằng là khai báo
thuộc tính là final. Vd:
final int MAX_VALUE = 100;
III. Kiểủ dữ liệu:
Giống nhau:
Cả C++, C# và Java đều chia thành 2 tập hợp kiểu dữ liệu chính là: kiểu
xây dựng sẵn do ngôn ngữ lập trình cung cấp cho người lập trình và kiểu
dữ liệu do người dùng tự định nghĩa
3
Khác nhau:
C++ C# Java
Kiểu dữ liệu cơ bản
của C++ chia làm 3
nhóm :
_kiểu char: một giá
trị kiểu char chiếm 8
bit, biểu diễn kí tự
thông qua bảng mã
ASCII. Có 2 kiểu
char: sighed char(có
dấu) và unsighed
char( không dấu)
_ Kiểu nguyên: có 4
loại kiểu nguyên int,
unsighed int, long,
unsighed long,
_Kiểu dấu phẩy
động: có 3 loại giá trị
dấu phẩy động là
float, double, long
double .
Kiểu logic
boolean:một biến
kiểu logic boolean
nhận 1 trong 2 giá trị
true hoặc false. Nó
được sử dụng để
nhận giá trị trả về của
phép toán logic
C# phân tập hợp kiểu
dữ liệu thành hai loại:
Kiểu dữ liệu giá trị
(value) và kiểu dữ liệu
tham chiếu (reference).
Đối với một kiểu dữ
liệu giá trị thì sẽ được
lưu giữ kích thước thật
trong bộ nhớ đã cấp
phát là stack. Trong khi
đó thì địa chỉ của kiểu
dữ liệu tham chiếu thì
được lưu trong stack
nhưng đối tượng thật sự
thì lưu trong bộ nhớ
heap.
Kiểu dữ liệu nguyên
thủy của Java được chia
làm 3 nhóm :
- Kiểu nguyên bao gồm
kiểu số nguyên và kiểu
kí tự. Kiểu số nguyên
bao gồm byte, short,
long ,int. biểu diễn cho
các số nguyên. Kiểu kí
tư được thể hiện bằng
kiểu char.
_ Kiểu dấu phẩy động
bao gồm 2 kiểu float và
double biểu diễn cho số
thập phân.
_ Kiểu boolean : có 2
giá trị true(đúng) và
false(sai).
Trong Java có 3 kiểu dữ
liệu tham chiếu:
_ Mảng (Array): Tập
hợp các dữ liệu cùng
kiểu. Ví dụ : tên sinh
viên
_ Lớp (Class): Tập hợp
các biến và các phương
thức.Ví dụ : lớp
“Sinhviên” chứa toàn
bộ các chi tiết của một
sinh viên và các phương
thức thực thi trên các
chi tiết đó.
_ Giao diện
(Interface):Là một lớp
4
trừu tượng được tạo ra
cho phép cài đặt đa thừa
kế trong Java.
Nhận xét: Một ngôn ngữ mạnh về kiểu dữ liệu là phải khai báo kiểu dữ
liệu của mỗi đối tượng khi khởi tạo và trình biên dịch sẽ giúp cho người
lập trình không bị lỗi khi chỉ cho phép một kiểu dữ liệu có thể được gán
cho kiểu dữ liệu khác. Kiểu dữ liệu cua một đối tượng là tín hiệu để trình
biên dịch nhận biết được kích thước của 1 đối tượng và khả năng của nó.
IV. Kiểm tra kiểu, đổi kiểu:
Giống nhau:
Trong C++, C#, Java đều có chuyển kiểu tự động, chương trình
thực hiện việc tự động chuyển kiểu khi biểu thức gồm các toán
hạng khác kiểu : khi 2 toán hạng trong 1 phép toán có kiểu khác
nhau thì kiểu thấp hơn sẽ được tự động nâng thành kiểu cao hơn.
Kết quả chung là kiểu cao hơn.
Chuyển kiểu tường minh: thực hiện chuyển kiểu theo yêu cầu của
người sử dụng . Cú pháp: (kiểu) biểu thức hoặc kiểu(biểu_thức)
vd: Trong C++ : float d = 3.5;
int i = (int) d;
Khi chuyển một biểu thức kiểu dữ liệu có miền giá trị lớn hơn
sang 1 kiểu dữ liệu có miền giá trị nhỏ hơn, ta có thể bị mất thông
tin
V. Không gian tên:
Nhằm tránh sự xung đột giữa việc sử dụng các thư viện khác
nhau từ các nhà cung cấp, C++, C# đưa ra khái niệm namespace ,
namespace được xem như là tập hợp các lớp đối tượng, và cung
cấp duy nhất các định danh. Ngoài thư viện namespace do ngôn
ngữ lập trình cung cấp, ta có thể tạo riêng cho mình các
namespace. C++, C# đưa ra từ khóa using đề khai báo sử dụng
namespace.
Vd: Trong C# , cú pháp: using
Để tạo một namespace dùng cú pháp sau:
namespace
{
……
}
5
Trong Java cũng có khái niệm package giống như namespace
trong C++ va C#.
VI. Quản lý và cấp phát bộ nhớ:
_ Trong C++, mỗi đối tượng khi tồn tại hay hoạt động được hệ
điều hành cấp phát 1 vùng nhớ để lưu trữ các giá trị của dữ liểu
thành phần cũng như các liên kết tới phương thức của chúng. Khi
tạo ra đối tượng , hệ điều hành sẽ gán luôn cho các dữ liệu thành
phần này các giá trị khởi tạo tùy theo mong muốn của người lập
trình bằng các lệnh khai báo đối tượng. Các quá trình gán dữ liệu
này phải được thực hiện tự động trước khi người lập trình có thể
tác động lên đối tượng. Trong C++ có thể khởi tạo tự động 1 đối
tượng bằng cách cung cấp phương thức khởi tạo trong định nghĩa
lớp. Ngược lại khi kết thúc vòng đời của 1 đối tượng cần phải giải
phóng hợp lý tất cả bộ nhớ đã được cấp phát cho đối tượng. Mục
đích chính là đảm bảo các đối tượng được giải phóng đúng đắn.
Khi khai báo thông qua con trỏ, gặp lệnh new thì khởi tạo đối
tượng , gặp lệnh delete thì giải phóng đối tượng.
_Trong C# , những kiểu dữ liệu chuẩn như int, float, double … là
những kiểu dữ liệu giá trị, và các biến được tạo ra từ các kiểu dữ
liệu này được lưu trên stack. Tuy nhiên, với các đối tượng kiểu dữ
liệu tham chiếu thì được tạo ra trên heap, sử dụng từ khóa new để
tạo một đốit ượng: vd: ThoiGian t = new ThoiGian(); Sử dụng từ
khóa delete để giải phóng 1 đối tượng. vd delete (t);
VII. Hàm trùng tên:
Trong thực tế nhiều lúc ta phải thực thi nhiều hàm có chức
năng giống nhau. Ví dụ ta xây dựng 1 hàm để cộng 2 toán hạng,
thế nhưng toán hạng có thể là số nguyên , số thực , số phức, phân
số hay là xâu. Khi đó ta phải xây dựng các hàm thực hiện các chưc
năng trên có cùng 1 tên. Trong C++, C#, Java có hỗ trợ điều này ,
các hàm đó được gọi là hàm trùng tên hay các hàm xếp
chồng(chồng hàm).
Trong C++,C#, Java: các hàm trùng tên phải khác nhau về
danh sách tham số. Nghĩa là hoặc các hàm phải khác nhau về số
lượng tham số, hoặc nếu có số lượng tham số bằng nhau thì phải
khác nhau về kiểu tham số. Để phân biệt các hàm với nhau, ngoài
tên hàm , chương trình dịch còn căn cứ vào danh sách các tham số,
chính vì vậy,danh sách tham số còn được gọi là chữ kí của hàm.
VIII. Nhập xuất:
_Trong C++ , có hai phương thức nhập xuất là nhập xuất theo C
chuẩn hoặc nhập xuất theo cách mới của C++.
6
+Nhập xuất trong C chuẩn: sử dụng thư viện stdio.h , xuất dữ
liệu bằng printf: nó cho phép chuyển dạng, tạo khuôn dạng của đối
số và đưa chúng ra màn hình . Nhập dữ liệu bằng hàm scanf , nó
đọc thông tin từ chiều vào chuẩn.
+Nhập xuất trong C++ : cách nhập xuất mới trong C++ sử dụng
lớp. Dùng thư viện iostream.h, nhập dữ liệu bằng >> và xuất dữ
liệu bằng <<. Xuất dữ liệu với cout: cout<< bieu_thuc;
cout<<bieu_thuc1<<bieu_thuc2<<…<<bieu_thucn;
Nhập dữ liệu với cin:
cin>> bien;
cin>>bien1>>….>bienn;
+ Ngoài ra trong C++ còn có hàm nhập xuất xâu và kí tự.
File đính kèm:
Đề tài Trình bày điểm giống nhau, khác nhau giữa C++, C#, Java.pdf

