Đề tài Điểm giống và khác nhau giữa C++, C# và Java - Lưu Văn Diệp

Java sử dụng các từ khóa “static final”

để tạo nên các biến hằng; trong Java

một biến “static final” là một biến lớp

thay vì là một biến đối tượng, và trình

biên dịch sẽ ngăn ngừa bất kỳ các đối

tượng khác thay đổi giá trị của biến.

pdf7 trang | Chuyên mục: Lập Trình Hướng Đối Tượng | Chia sẻ: dkS00TYs | Lượt xem: 1986 | Lượt tải: 0download
Tóm tắt nội dung Đề tài Điểm giống và khác nhau giữa C++, C# và Java - Lưu Văn Diệp, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
n = 100; 
/* Biến maxn là biến toàn cục, có thể sử dụng bất 
kỳ nơi nào trong chương trình */ 
int main() 
{ 
 cout << maxn;//xuất ra màn hình 100 
 int maxn = 200; 
//biến maxn này là biến cục bộ 
 cout << maxn;//xuất ra màn hình 200 
 cout << ::maxn;//xuất ra màn hình 100 
//sử dụng toán tử ::, trình biên dịch hiểu đó //là 
biến toàn cục 
 return 1; 
} 
Tương tự C++ 
Java sử dụng các từ khóa “static final” 
để tạo nên các biến hằng; trong Java 
một biến “static final” là một biến lớp 
thay vì là một biến đối tượng, và trình 
biên dịch sẽ ngăn ngừa bất kỳ các đối 
tượng khác thay đổi giá trị của biến. 
 2.Hằng 
#define 
//vd: 
 #define maxn 100 
/* Nơi nào xuất hiện maxn thì trình biên dịch tự 
động hiểu đó là 100 */ 
#define get_max a>b?a:b 
int main() 
{ 
 cout<<maxn;//xuất ra màn hình 100 
 int maxn = 200;//báo lỗi 
// vì không thể gán giá trị 200 cho 100 
 int a = 2 , b = 3; 
 int max = get_max; 
 cout << max;//xuất ra màn hình 3 
return 0; 
} 
readonly <kiểu dữ 
liệu> = 
; 
Kiểu dữ liệu 
1.Kiểu giá 
trị 
2.Kiểu tham 
chiếu 
Từ 
khóa 
Mô tả Kích 
cỡ 
Tối 
thiểu 
Tối đa 
bool Kiểu 
logic 
true / 
false 
int Số 
nguyê
n 
32 bit -231 231-1 
long Số 
nguyê
n dài 
64 bit -263 263-1 
unsigned 
float Kiểu 
thực 
32 bit 
double 64 bit 
char Kiểu 
ký tự 
16 bit Unicode 
0 
Unicode 
216-1 
void 
bool 
byte, sbyte 
char 
short, ushort, int, uint, 
long, ulong 
float, double 
decimal 
datetime 
object 
string 
Tương tự C++ 
Kiểu dữ liệu Mô tả 
Mảng(array) Tập hợp các dữ 
liệu cùng kiểu 
Lớp (class) Là sự cài đặt mô 
tả về 1 đối tượng 
trong bài toán 
Giao 
diện(interface) 
Là một lớp 
thuần trừu tượng 
được tạo ra cho 
phép cài đặt đa 
thừa kế trong 
Java. 
Kiểm tra 
kiểu, đổi 
kiểu 
int i;//kiểu số nguyên 
float f = 3.14;//kiểu số thực 
i = (int) f;//chuyển kiểu tường minh 
//hoặc 
i = int (f); 
Tương tự C++ 
Tương tự C++ 
Nếu trong một phép toán có sự tham 
gia của nhiều toán hạng có kiểu khác 
nhau thì java sẽ chuyển kiểu tự động 
cho các toán hạng một cách tự động 
theo quy tắc sau: 
byte  short  int  long  float  
double 
Chuyển đổi kiểu tường minh 
Để chuyển đổi kiểu một cách tường 
minh ta sử dụng cú pháp sau: 
(type) biểu_thức; 
khi gặp câu lệnh này java sẽ tính toán 
giá trị của biểu thức sau đó chuyển đổi 
kiểu giá trị của biểu thức thành kiểu 
type. 
Ví dụ: 
(int) 2.5 * 2 = 4 (int) 2.5 * 2.5 = 5 
(int)(2.5 * 2.5) = 6 
1+(float)5/2=1+5/(float)2= 
1+(float)5/(float)2=3.5 
Chú ý: 
1. Phép toán chuyển kiểu là phép toán 
có độ ưu tiên cao, nên 
(int)3.5*2≠(int)(3.4*2) 
2. Cần chú ý khi chuyển một biểu thức 
kiểu dữ liệu có miền giá trị lớn sang 
một kiểu có miền giá trị nhỏ hơn. 
Trong trường hợp này có thể bạn sẽ bị 
mất thông tin. 
Nhập / Xuất #include 
#include 
using namespace std; 
int main() 
{ 
 int x; 
 cin >> x; //nhập giá trị của x 
 cout << x <<endl; // xuất giá trị của x 
//ra màn hình sau đó con trỏ xuống dò 
namspace System; 
class program 
{ 
 static void Main() 
 { 
int x = 4; 
Console.WriteLine(“{
0}”,x); 
//xuất ra //màn hình giá 
class test 
{ 
public static void main(String[] args) 
 { 
int i = 3; 
System.out.println(i); //xuất ra //màn 
hình giá 3 
} 
} 
 scanf(“%d”,&x); 
 printf(“%d”,x); 
return 0; 
} 
4 
Console.Read(); 
/*dừng chương trình 
đến khi nhấn 1 phím 
bất kỳ để thoát*/ 
 } 
} 
Không gian 
tên 
Mỗi ngôn ngữ lập trình có một tập các từ khoá, người lập trình phải sử dụng từ khoá theo đúng nghĩa mà người thiết 
kế ngôn ngữ đã đề ra, ta không thể định nghĩa lại nghĩa của các từ khoá, cũng như sử dụng nó để đặt tên biến, hàm.. 
Java: 
Abstract Sử dụng để khai báo lớp, phương thức trừu tượng 
boolean Kiểu dữ liệu logic 
Break Được sử dụng để kết thúc vòng lặp hoặc cấu trúc switch 
Byte Kiểu dữ liệu số nguyên 
case Được sử dụng trong lệnh switch 
cast Chưa được sử dụng 
catch Được sử dụng trong xử lý ngoại lệ 
Char Kiểu dữ liệu ký tự 
Class Dùng để khai báo lớp 
Const Hằng 
Continue Được dùng trong vòng lặp để bắt đầu một vòng lặp mới 
default Dùng trong switch 
do Lệnh điều kiện 
Double Kiểu dữ liệu số thực 
else Khả năng lựa chon thứ 2 trong câu lệnh if 
extends Chỉ rằng một lớp được kế thừa từ một lớp khác 
false Giá trị logic 
final Dùng đẻ khai báo hằng số, phương thức không thể ghi đè, hoặc lớp không thể kế thừa 
finally phần cuối của khối xử lý ngoại lệ 
float kiểu số thực 
for Câu lệnh lặp 
goto Lệnh nhảy 
if Câu lệnh lựa chọn 
implements chỉ rằng một lớp triển khai từ một giao diện 
import Khai báo sử dụng thư viện 
instanceof kiểm tra một đối tượng có phải là một thể hiện của lớp hay không 
interface sử dụng để khai báo giao diện 
long kiểu số nguyên 
native Khai báo phương thức được viết bằng ngông ngữ biên dịch C++ 
new tạo một đối tượng mới 
null một đối tượng không tồn tại 
package Dùng để khai báo một gói 
private đặc tả truy xuất 
protected đặc tả truy xuất 
public đặc tả truy xuất 
return Quay từ phương thức về chỗ gọi nó 
short kiểu số nguyên 
static Dùng để khai báo biến, thuộc tính tĩnh 
Super Truy xuất đến lớp cha 
switch lệnh lựa chọn 
synchronized một phương thức độc quyền truy xuất trên một đối tượng 
this Ám chỉ chính lớp đó 
throw Ném ra ngoại lệ 
throws Khai báo phương thức ném ra ngoại lệ 
true Giá trị logic 
try sử dụng để bắt ngoại lệ 
void Dùng để khai báo một phương thức không trả về giá trị 
While Dùng trong cấu trúc lặp 
Định danh (tên) 
 Tên dùng để xác định duy nhất một đại lượng trong chương trình. Trong java tên được đặt theo quy tắc sau: 
- Không trùng với từ khoá 
- Không bắt đầu bằng một số, tên phải bắt đầu bằng kí tự hoặc bắt đầu bằng kí $,_ 
- Không chứa dấu cách, các kí tự toán học như +, -, *,/, %.. 
- Không trùng với một định danh khác trong cùng một phạm vi 
Chú ý: 
- Tên nên đặt sao cho có thể mô tả được đối tượng trong thực tế 
- Giống như C/C++, java có phân biệt chữ hoa chữ thường 
- Trong java ta có thể đặt tên với độ dài tuỳ ý 
 - Ta có thể sử dụng các kí tự tiếng việt để đặt tên 
C# 
abstract default foreach object sizeof unsafe 
as delegate goto operator stackalloc ushort 
base do if out static using 
bool double implicit override string virtual 
break else in params struct volatile 
byte enum int private switch void 
case event interface protected this while 
catch explicit internal public throw 
char extern is readonly true 
checked false lock ref try 
class finally long return typeof 
const fixed namespace sbyte uint 
continue float new sealed ulong 
decimal for null short unchecked 
Hàm trùng 
tên 
#include 
int divide (int a, int b) 
{ 
 return (a/b); 
} 
using System; 
public class program 
{ 
 public int divide (int a, int b) 
 { 
public class OverloadingOrder 
{ 
static void print(String s, int i) 
{ 
System.out.println( "String: " + s +", 
int: " + i); 
float divide (float a, float b) 
{ 
 return (a/b); 
} 
int main () 
{ 
 int x=5,y=2; 
 float n=5.0,m=2.0; 
 cout << divide (x,y); 
//gọi hàm divide (int a, int b) 
 cout << "\n"; 
 cout << divide (n,m); 
//gọi hàm divide (float a, float b) 
 return 0; 
} 
C++ cho phép đặt tên các hàm trùng 
nhau. Nó có thể có các tham số khác 
nhau, kiểu dữ liệu của các tham số 
khác nhau, thậm chí kiểu trả về khác 
nhau, trong thân hàm quá tải có thể 
có nội dung khác nhau. 
 return (a/b); 
 } 
 public float divide(float a, float b) 
 { 
 return (a / b); 
 } 
 public int x; 
 public float y; 
} 
public class test 
{ 
public static void Main() 
{ 
 program a = new program(), 
 b = new program(); 
 a.x = 5; 
 b.x = 8; 
Console.WriteLine("{0}",a.divide(a.x,
b.x)); 
 a.y = 5; 
 b.y = 8; 
Console.WriteLine("{0}",a.divide(a.y, 
b.y)); 
 Console.Read(); 
} 
} 
} 
static void print(int i, String s) 
{ 
System.out.println( "int: " + i + ", 
String: " + s); 
} 
public static void main(String[] args) 
{ 
print("String first", 11); 
print(99, "Int first"); 
} 
} 
Nhận xét: 
C# là ngôn ngữ ít từ khóa. C# là ngôn ngữ sử dụng giới hạn những từ khóa. Phần lớn các từ khóa được sử 
dụng để mô tả thông tin. Không nhất thiết một ngôn ngữ mạnh là có nhiều từ khóa. Đúng vậy, ít nhất là 
trong trường hợp ngôn ngữ C#, chúng ta có thể tìm thấy rằng ngôn ngữ này có thể được sử dụng để làm 
bất cứ nhiệm vụ nào. 
Mã nguồn C# không đòi hỏi phải có tập tin header. Tất cả mã nguồn được viết trong khai báo một lớp. 
.NET runtime trong C# thực hiện việc thu gom bộ nhớ tự động. Do điều này nên việc sử dụng con trỏ 
trong C# ít quan trọng hơn trong C++. Những con trỏ cũng có thể được sử dụng trong C#, khi đó những 
đoạn mã nguồn này sẽ được đánh dấu là không an toàn (unsafe code). 
C# cũng từ bỏ ý tưởng đa kế thừa như trong C++. Và sự khác nhau khác là C# đưa thêm thuộc tính vào 
trong một lớp giống như trong Visual Basic. Và những thành viên của lớp được gọi duy nhất bằng toán 
tử “.” khác với C++ có nhiều cách gọi trong các tình huống khác nhau. 
Java là một ngôn ngữ mạnh, giống như C++ và C# được phát triển dựa trên C. Điểm giống nhau C# và 
Java là cả hai cùng biên dịch ra mã trung gian: C# biên dịch ra MSIL còn Java biên dịch ra bytecode. Sau 
đó chúng được thực hiện bằng cách thông dịch hoặc biên dịch just-in-time trong từng máy ảo tương 
ứng. Tuy nhiên, trong ngôn ngữ C# nhiều hỗ trợ được đưa ra để biên dịch mã ngôn ngữ trung gian sang 
mã máy. C# chứa nhiều kiểu dữ liệu cơ bản hơn Java và cũng cho phép nhiều sự mở rộng với kiểu dữ liệu 
giá trị. Ví dụ, ngôn ngữ C# hỗ trợ kiểu liệt kệ (enumerator), kiểu này được giới hạn đến một tập hằng 
được định nghĩa trước, và kiểu dữ liệu cấu trúc đây là kiểu dữ liệu giá trị do người dùng định nghĩa. 
Tương tự như Java, C# cũng từ bỏ tính đa kế thừa trong một lớp, tuy nhiên mô hình kế thừa đơn này được 
mở rộng bởi tính đa kế thừa nhiều giao diện. 

File đính kèm:

  • pdfĐề tài Điểm giống và khác nhau giữa C++, C# và Java - Lưu Văn Diệp.pdf