01/10/2018, 10:17

Nên học hướng đối tượng với c++ hay với c#

Em đang chuẩn bị bước sang năm 2 mà đang phân vân nên học hướng đối tượng với c++ hay với c# đây. Phiền m.n tư vấn giúp mình

Hidan viết 12:21 ngày 01/10/2018

mình vote java nhé :v

Trần Hoàn viết 12:22 ngày 01/10/2018

Hồi học C++ mình chả hiểu gì, chắc tại ngu.
Học C# rồi làm mấy cái phần mềm xàm xàm mới hiểu một chút về hướng đối tượng, xong mới quay lại C++ mấy tháng gần đây thì hiểu.

Tao Không Ngu. viết 12:30 ngày 01/10/2018

Hi Ha manh Trung.
Java

明玉 viết 12:29 ngày 01/10/2018

Vote C#, code ngắn gọn đẹp hơn Java
Hướng đối tượng thật ra mỗi ngôn ngữ thực hiện mỗi kiểu khác nhau. Đúng ra là phải học lý thuyết hướng đối tượng rồi mới vác ngôn ngữ lập trình ra làm thực tế.

Ha manh Trung viết 12:23 ngày 01/10/2018

vậy mình có thể học luôn c# hoặc java đc mà không cần qua oop của c++ nhỉ

Đỗ Nhiên viết 12:34 ngày 01/10/2018

java là chuẩn bài nhất đó đấy bạn mỗi tội em nó hơi dài thôi nhưng có các ide hỗ trợ rồi

Đỗ Nhiên viết 12:30 ngày 01/10/2018

c++ là bố của java và c# đấy học được c++ là học được hai thằng này luôn

Phan Bá Hải viết 12:19 ngày 01/10/2018

Vote C#, thằng này thể hiện OOP rõ hơn C++
Sau khi học C# thì nhảy qua Java cũng dễ

Hung viết 12:21 ngày 01/10/2018

Java hoặc C#. Do Java hoạt động trên mọi nền tảng Windows, Linux, macOS nên ưa chuộng hơn.

Cong 5 viết 12:27 ngày 01/10/2018

C# mà hướng đối tượng rõ hơn java à ??

Phan Bá Hải viết 12:22 ngày 01/10/2018

C# mà hướng đối tượng rõ hơn java à ??

Vote C#, thằng này thể hiện OOP rõ hơn C++

Nhầm rồi bạn ơi…

Văn Dương viết 12:28 ngày 01/10/2018

Vậy OOP thể hiện rõ hay không rõ là dựa vào cái gì ???
Phải có tiêu chí mới đánh giá được thằng nào rõ hơn.

Trần Hoàn viết 12:22 ngày 01/10/2018

C# thì nó có nhiều thứ hay ho hơn Java. Làm C# quen rồi, nhảy sang Java sẽ thấy không vui lắm.
Với cả bây giờ thì C# hay Java cũng đều đa nền tảng cả rồi, cái lý do C# chỉ chạy trên .NET Framework không còn hợp lý nữa.

Theo như mình nhớ thì người xây dựng C# đầu tiên cũng là người viết compiler đầu tiên cho Pascal. Ông này xây dựng C# dựa trên C++, Java và VB thì phải.

Tao Không Ngu. viết 12:29 ngày 01/10/2018

Hi Ha manh Trung.
Hãy bắt đầu với java. C++ không có một FW thống nhất mà một FW tốt là một phần không thể thiếu của OOP. C# được thiết kế với mục đích tạo ra code ngắn gọn bằng từ kinh nghiệm lập trình vd như get set nên không thực sự đem lại cái nhìn khách quan về OOP.

P/S Chọn cái gì tùy bạn OOP không phụ thuộc vào ngôn ngữ. C cũng viết OOP được.

Văn Dương viết 12:18 ngày 01/10/2018

C viết OOP kiểu gì nhỉ @@ ?

Tuổi Già Ta Vẫn Xông Pha viết 12:21 ngày 01/10/2018

C# hay Java đều được. Đừng học OOP vs C++ (tuy noa là cơ bản) vì nó là ngôn ngữ Lai. Bạn muốn thuần về OOP mà gawhp C++ dùng con trỏ là khóc bằng tiếng mẹ đẻ đó
Kinh nghiệm của 1 Dev khá thuần thục C++/Java/C# cho hay

Dark.Hades viết 12:21 ngày 01/10/2018

Viết được, mà nó kiểu struct toàn tập, trông dị hợm chứ không giống OOP

Văn Dương viết 12:32 ngày 01/10/2018

Nó đâu có thể hiện 4 tính chất của hướng đối tượng ??

Tao Không Ngu. viết 12:24 ngày 01/10/2018

Hi Văn Dương.
Dùng struct và con trỏ hàm có thể xay dựng được class đơn giải.

Code dài nhưng có lẽ đủ 4 tính chất.

#include <stdio.h>
#include <stdlib.h>

typedef struct animal {
	int weight;
	char* name;
	void (*show)(struct animal *);
} animal;

void animalShow(animal* this) {
	printf(this->name);
}

animal initAnimal(int weight, char *name) {
	animal tmpAnimal;
	tmpAnimal.weight = weight;
	tmpAnimal.name = name;
	tmpAnimal.show = &animalShow;
return tmpAnimal;
}

typedef struct dog {
	animal base;
	int age;
} dog;

void dogShow(animal *this) {
	animalShow(this);
	printf(" age %d\n", ((dog *)this)->age);
}

dog initDog(int weight, char *name, int age) {
	dog tmpDog;
	tmpDog.base = initAnimal(weight, name);
	tmpDog.age = age;
	tmpDog.base.show = &dogShow;
return tmpDog;
}

int main(int argc, char **argv) {
	dog myDog = initDog(50, "Dog", 5);
	myDog.base.show((animal *) &myDog);
	
	animal *myAnimal = (animal *) &myDog;
	myAnimal->show(myAnimal);
	
	return 0;
}

P/S Theo mình thì các phương thức cung như con trỏ hàm, this là đối ngầm định được truền vào tự động khi biên dịch kiểu như oop của python.

Văn Dương viết 12:21 ngày 01/10/2018

Cái mình nói đến là tính chất của hướng đối tượng.
struct là struct, class là class.

Bài liên quan
0