সি # তে নেমস্পেস এবং জাভাতে প্যাকেজগুলির মধ্যে পার্থক্য (ব্যবহারের ক্ষেত্রে) কী?
উত্তর:
থেকে: http://www.javacamp.org/javavscsharp/namespace.html
ধরণের দ্বন্দ্ব এড়াতে প্যাকেজগুলি ফাইল বা সর্বজনীন ধরণের সংগঠিত করতে ব্যবহৃত হয়। প্যাকেজ কনস্ট্রাক্টসগুলি একটি ফাইল সিস্টেমে ম্যাপ করা যায়।
system.security.cryptography.AsymmetricAlgorithm aa;
প্রতিস্থাপন করা যেতে পারে:
import system.security.Crypography;
class xxx { ...
AsymmetricAlgorithm aa;
প্যাকেজগুলির জন্য কোনও উপাধি নেই। নির্দিষ্ট ধরণের উল্লেখ করতে আপনাকে আমদানি বিবৃতি বা সম্পূর্ণ-যোগ্যতাসম্পন্ন নাম ব্যবহার করতে হবে।
package n1.n2;
class A {}
class B {}
বা
package n1.n2;
class A {}
অন্য উত্স ফাইল:
package n1.n2;
class B {}
প্যাকেজ নেস্ট করা যাবে না। একটি উত্স ফাইলে কেবল একটি প্যাকেজ বিবৃতি থাকতে পারে।
প্রোগ্রামের সংগঠিত করতে নেমস্পেসগুলি উভয়ই একটি প্রোগ্রামের জন্য "অভ্যন্তরীণ" সংগঠন সিস্টেম এবং "বাহ্যিক" সংগঠন সিস্টেম হিসাবে ব্যবহৃত হয়।
System.Security.Cryptography.AsymmetricAlgorithm aa;
প্রতিস্থাপন করা যেতে পারে:
using System.Security.Crypography;
AsymmetricAlgorithm aa;
বিকল্পভাবে, কেউ নামের স্থানের জন্য একটি উপকরণ নির্দিষ্ট করতে পারে, যেমন
using myAlias = System.Security.Crypography;
এবং তারপরে ক্লাসটি পড়ুন
myAlias.AsymmetricAlgorithm
namespace N1.N2
{
class A {}
class B {}
}
বা
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
পৃথক কয়েকটি বিশদ রয়েছে।
জাভাতে ডিরেক্টরি কাঠামোটি প্যাকেজ কাঠামোর সাথে মেলে। সি # তে এরকম কোনও বিধিনিষেধ নেই।
সি # তে আপনার একটি ফাইলে একাধিক নেমস্পেস থাকতে পারে। জাভাতে একটি ফাইল একটি প্যাকেজের অন্তর্ভুক্ত (পূর্ববর্তী দেখুন)।
জাভা ডিফল্ট / প্যাকেজ অ্যাক্সেসযোগ্যতা আছে। সি # অভ্যন্তরীণ অ্যাক্সেসযোগ্যতা সমাবেশগুলিতে যায় lies
আপনি যদি ভিএস এবং Eclipse ব্যবহার করেন এবং তাদের প্রকল্পটি কাঠামো করতে দিন, তবে আপনি পার্থক্যগুলি খুব বেশি অনুভব করবেন না।
জাভাতে "নেমস্পেস" এর মতো কোনও শব্দ নেই - একটি প্যাকেজ জাভাতে নেমস্পেস হিসাবে কাজ করে যদিও নামের সুযোগ দেওয়ার ক্ষেত্রে। এটি অ্যাক্সেসযোগ্যতা মডেলের অংশ।
জাভা ভাষা নির্দিষ্টকরণের 7 নং বিভাগ থেকে :
প্রোগ্রামগুলি প্যাকেজের সেট হিসাবে সংগঠিত হয়। প্রতিটি প্যাকেজের বিভিন্ন ধরণের নামগুলির নিজস্ব সেট রয়েছে যা নামের বিরোধগুলি প্রতিরোধ করতে সহায়তা করে। একটি শীর্ষ স্তরের প্রকারটি প্যাকেজের বাইরে অ্যাক্সেসযোগ্য (§§. that) যা টাইপটি সর্বজনীনভাবে ঘোষিত হলেই এটি তা ঘোষণা করে।
সম্পাদনা: ঠিক আছে, স্পষ্টির পরে: একটি জাভা প্যাকেজটি সি # নামপথের সাথে সমান - এটি ব্যতীত এর অ্যাক্সেসিবিলিটির উপর প্রভাব রয়েছে, অন্যদিকে সি # নামস্থান এবং অ্যাক্সেসিবিলিটি সম্পূর্ণ অরথোগোনাল।
জাভাতে আপনি ক্লাসে বিভিন্ন অ্যাক্সেস স্পেসিফায়ার প্রয়োগ করতে পারেন যা আপনার প্যাকেজগুলিতে প্রভাব ফেলবে।
সুরক্ষিত: একই প্যাকেজটিতে অ্যাক্সেসযোগ্য এবং অন্য প্যাকেজটিতে এর সাবক্লাসে, ডিফল্ট: একই প্যাকেজে অ্যাক্সেসযোগ্য, সর্বজনীন: সর্বজনীন অ্যাক্সেসযোগ্য, ব্যক্তিগত: এমনকি একই প্যাকেজটির মাধ্যমে অ্যাক্সেসযোগ্য নয়।
এই ধরণের অ্যাক্সেস স্পেসিফায়ার সি স্পারিতে নেমস্পেসের জন্য প্রযোজ্য নয়
একটি নেমস্পেস ঠিক একটি নতুন ফোল্ডারের মতো, সমস্ত সাবফোল্ডারগুলি উপ-নামস্থান। যদি আমরা কোনও নেমস্পেসটিকে কোনও ফাংশন হিসাবে বিবেচনা করি যেমন বিপণন নেমস্পেসের অধীনে আমাদের একটি নেমস্পেস বিজ্ঞাপন রয়েছে তবে আমরা বিপণন.এডভার্টাইজিং.এডস্ক্লাস.ডেসমোথড ব্যবহার করি। একটি সমস্যা সমাধান করা খুব সহজ। জাভা প্যাকেজ মাধ্যমে একই পদ্ধতি কিন্তু নতুন আগতদের জন্য জটিল।
সি # তে
'' 'নেমস্পেস বিপণন {
class admissions{
int admissions_method(){
}
}
namespace advertising{
class advertisement{
void ad_in_newspaper( int no_of_lines){
}
void ad_on_tv(int seconds){
}
}
}
ক্লায়েন্ট ক্লাসে ব্যবহার করতে
using marketing;
using marketing.advertising;
'' 'জাভাতে আপনি একই পদ্ধতি ব্যবহার করেন। আপনি এক প্যাকেজে একাধিক ক্লাস প্যাক করেছেন এবং এটি বহুবার ব্যবহার করেন। এটি স্বতন্ত্রতা বাড়ে। আপনি একবার লিখুন এবং বহুবার ব্যবহার করুন। একটি প্যাকেজ সম্পর্কিত ক্লাস। অনেকবার কোড করার দরকার নেই।
import system.security.crypography.AsymmetricAlgorithm;। জাভাতে যেহেতু আপনাকে কোনও ক্লাস আমদানি করতে হবে, প্যাকেজ নয়। একটি প্যাকেজে সমস্ত ক্লাস আমদানি করা সম্ভবimport package.*তবে এটি প্যাকেজটি নয়, ক্লাস আমদানি করে।