উত্তর:
class C
একটি শ্রেণি সংজ্ঞায়িত করে ঠিক যেমন জাভা বা সি ++ তে।object O
কিছু বেনাম শ্রেণীর উদাহরণ হিসাবে একটি সিঙ্গলটন অবজেক্ট তৈরি করে O
; এটি স্থির সদস্যদের ধরে রাখতে ব্যবহার করা যেতে পারে যা কিছু শ্রেণির উদাহরণের সাথে সম্পর্কিত নয়।object O extends T
বস্তুকে O
উদাহরণ হিসাবে দেখায় trait T
; তারপরে আপনি O
যে কোনও জায়গায় যেতে পারবেন , একটি T
প্রত্যাশিত।class C
, তারপর object C
হয় সহচর বস্তুর ক্লাসের C
; নোট করুন যে সহযোগী বস্তুটি স্বয়ংক্রিয়ভাবে এর উদাহরণ নয়C
।বস্তু এবং শ্রেণীর জন্য স্কালার ডকুমেন্টেশনও দেখুন ।
object
স্থির সদস্যদের হোস্ট হিসাবেবেশিরভাগ ক্ষেত্রে, আপনার প্রয়োজন এমন object
পদ্ধতি এবং মান / ভেরিয়েবলগুলি ধরে রাখার জন্য যা প্রথমে কিছু শ্রেণীর উদাহরণ ইনস্ট্যান্ট না করেই পাওয়া যায়। এই ব্যবহার static
জাভা সদস্যদের সাথে নিবিড়ভাবে সম্পর্কিত ।
object A {
def twice(i: Int): Int = 2*i
}
তারপরে আপনি উপরের পদ্ধতিটি ব্যবহার করে কল করতে পারেন A.twice(2)
।
যদি twice
কোনও শ্রেণির সদস্য হতামA
, তবে আপনাকে প্রথমে একটি উদাহরণ তৈরি করতে হবে:
class A() {
def twice(i: Int): Int = 2 * i
}
val a = new A()
a.twice(2)
আপনি দেখতে পাচ্ছেন যে এটি কতটা অপ্রয়োজনীয়, যেমন twice
কোনও উদাহরণ-নির্দিষ্ট ডেটার প্রয়োজন হয় না।
object
একটি বিশেষ নামকরণ হিসাবেআপনি object
নিজে কোনও শ্রেণি বা বৈশিষ্ট্যের বিশেষ উদাহরণ হিসাবে নিজেকে ব্যবহার করতে পারেন । আপনি যখন এটি করেন, আপনার অবজেক্টের কিছুটা বাড়ানো দরকারtrait
এটির একটি সাবক্লাসের উদাহরণ হয়ে উঠতে ।
নিম্নলিখিত কোড বিবেচনা করুন:
object A extends B with C {
...
}
এই ঘোষণাটি প্রথমে একটি বেনাম (অ্যাক্সেসযোগ্য) শ্রেণি ঘোষণা করে যা উভয়কে প্রসারিত করে B
এবং C
এই শ্রেণীর নামটির একক উদাহরণ ইনস্ট্যান্ট করে দেয়A
।
এর অর্থগুলি A
টাইপের B
বা C
, বা এর প্রত্যাশার প্রত্যাশায় ফাংশনগুলিতে যেতে পারে B with C
।
object
স্কালায় বস্তুর কিছু বিশেষ বৈশিষ্ট্যও রয়েছে। আমি অফিসিয়াল ডকুমেন্টেশন পড়ার পরামর্শ দিই ।
def apply(...)
এর সাধারণ পদ্ধতির নাম-কম সিনট্যাক্স সক্ষম করে A(...)
def unapply(...)
কাস্টম প্যাটার্ন মেলানো এক্সট্র্যাক্টর তৈরি করতে দেয়Commerce
ক্লাসটি স্বীকৃতি দেবে না , তবে জেভিএম এবং জাভা ভাষা তা জানবে। (আপনি এটি করতে পারেন object Foo{ def main(args:Seq[String]) }
এবং প্রোগ্রামটি চালানোর আশা করতে পারেন ))
ক class
একটি সংজ্ঞা, একটি বিবরণ। এটি অন্যান্য ধরণের পদ্ধতি এবং রচনার ক্ষেত্রে কোনও প্রকারের সংজ্ঞা দেয়।
আন object
একটি সিঙ্গলটন - এমন শ্রেণীর উদাহরণ যা অনন্য হওয়ার গ্যারান্টিযুক্ত। কোডটির প্রত্যেকটির জন্য object
, একটি বেনাম শ্রেণি তৈরি করা হয়, যা object
আপনি প্রয়োগ করার জন্য যে ক্লাস ঘোষণা করেছিলেন তা থেকে উত্তরাধিকার সূত্রে প্রাপ্ত । এই শ্রেণিটি স্কালার উত্স কোড থেকে দেখা যায় না - যদিও আপনি এটি প্রতিবিম্বের মাধ্যমে পেতে পারেন।
object
এবং মধ্যে একটি সম্পর্ক আছে class
। কোনও বস্তুকে একই শ্রেণিভুক্ত হলে কোনও শ্রেণীর সহযোগী-বস্তু বলা হয়। এটি যখন ঘটে তখন প্রত্যেকের কাছে private
অন্যের মধ্যে দৃশ্যমানতার পদ্ধতিতে অ্যাক্সেস থাকে । যদিও এই পদ্ধতিগুলি স্বয়ংক্রিয়ভাবে আমদানি করা হয় না। আপনাকে সেগুলি স্পষ্টভাবে আমদানি করতে হবে, বা শ্রেণি / অবজেক্টের নামের সাথে তাদের উপসর্গ করতে হবে।
উদাহরণ স্বরূপ:
class X {
// class X can see private members of object X
// Prefix to call
def m(x: Int) = X.f(x)
// Import and use
import X._
def n(x: Int) = f(x)
private def o = 2
}
object X {
private def f(x: Int) = x * x
// object X can see private members of class X
def g(x: X) = {
import x._
x.o * o // fully specified and imported
}
}
def f(x: X) = ???
, তারপরে এটি x
সহকারী শ্রেণীর প্রাইভেট পদ্ধতিগুলিতে কল করতে সক্ষম হবে X
।
যেমনটি অনেকের দ্বারা ব্যাখ্যা করা হয়েছে, object
একটি সিঙ্গলটন উদাহরণকে সংজ্ঞায়িত করে। এখানে যে উত্তরে আমি বিশ্বাস করি যে একটি বিষয় বাদ পড়েছে তা হ'ল এটি object
বিভিন্ন উদ্দেশ্যে কাজ করে।
এটি স্থিতিশীল পদ্ধতি বা সুবিধার পদ্ধতি হিসাবে বিবেচিত হতে পারে এমন একটি class
/ এর সহযাত্রী বস্তু trait
হতে পারে।
এটি সম্পর্কিত / সহায়ক সংজ্ঞা এবং সংজ্ঞা ইত্যাদি সমন্বিত মডিউলটির মতো কাজ করতে পারে much
এটি একটি class
বা এক বা একাধিক trait
গুলি বাড়িয়ে একটি ইন্টারফেস বাস্তবায়ন করতে পারে ।
এটি sealed trait
এমন কোনও মামলার প্রতিনিধিত্ব করতে পারে যাতে কোনও ডেটা থাকে না। এই ক্ষেত্রে, এটি প্রায়শই case class
কোনও পরামিতি ছাড়াই বেশি সঠিক বলে বিবেচিত হয় । sealed trait
কেবলমাত্র case object
বাস্তবায়নকারীদের সহ একটি বিশেষ ক্ষেত্রে একটি এনামের স্কেল সংস্করণ কম বেশি is
এটি- implicit
চালিত যুক্তির প্রমাণ হিসাবে কাজ করতে পারে ।
এটি একটি সিঙ্গলটন প্রকারের সাথে পরিচয় করিয়ে দেয়।
এটি একটি খুব শক্তিশালী এবং সাধারণ নির্মাণ। স্কালার শুরুর জন্য বিভ্রান্তিকর কি হতে পারে তা হ'ল একই কনস্ট্রাক্টটির বিবিধ ব্যবহার হতে পারে। এবং একটি object
এই সমস্ত বিভিন্ন ব্যবহার একবারে একবারে পরিবেশন করতে পারে যা আরও বিভ্রান্তিকর হতে পারে।
স্কালায় কোনও অবজেক্টের সংজ্ঞা দেওয়া জাভাতে কোনও শ্রেণীর সংজ্ঞা দেওয়ার মতো যাতে কেবল স্থির পদ্ধতি রয়েছে। যাইহোক, স্কালায় একটি অবজেক্ট আরেকটি সুপারক্লাস প্রসারিত করতে পারে, ইন্টারফেস প্রয়োগ করতে পারে এবং চারপাশে পাস করা যেতে পারে যেমন এটি কোনও শ্রেণীর উদাহরণ। (সুতরাং এটি ক্লাসে স্থির পদ্ধতিগুলির মতো তবে আরও ভাল)।
আনুষ্ঠানিক পার্থক্য -
ব্যবহারের পার্থক্য:
object
। আপনি এটি সম্পর্কিত ক্লাসের সাথে বা ছাড়াই ব্যবহার করতে পারেন। প্রথম ক্ষেত্রে এটিকে সহকর্মী অবজেক্ট বলা হয়। তোমাকে করতেই হবে:
একটি প্রোগ্রাম তৈরি করতে আপনার মূল পদ্ধতিটি ব্যবহার করা উচিত object
, ভিতরে নয় class
।
object Hello {
def main(args: Array[String]) {
println("Hello, World!")
}
}
আপনি জাভাতে সিঙ্গলটন অবজেক্টটি ব্যবহার করার সময় এটি ব্যবহার করতে পারেন।
বস্তু শব্দ একটি নতুন Singleton টাইপ, যা একটি মত হল সৃষ্টি বর্গ শুধুমাত্র একটি একক নামে উদাহরণস্বরূপ রয়েছে। আপনি যদি জাভাটির সাথে পরিচিত হন তবে কোনও বিষয় ঘোষণা করে স্কালায় করা অনেকটা বেনাম শ্রেণীর একটি নতুন উদাহরণ তৈরি করার মতো।
স্কালার জাভার স্ট্যাটিক কীওয়ার্ডের সমতুল্য নেই , এবং স্ক্যালায় প্রায়শই একটি অবজেক্ট ব্যবহার করা হয় যেখানে আপনি জাভাতে স্থির সদস্যদের সাথে ক্লাস ব্যবহার করতে পারেন।
অবজেক্টটি একটি শ্রেণি তবে এটি ইতিমধ্যে একটি (উদাহরণ) উদাহরণ রয়েছে, সুতরাং আপনি কল করতে পারবেন না new ObjectName
। অন্যদিকে, ক্লাসটি কেবল টাইপ করা হয় এবং এটি কল করে উদাহরণ হতে পারে new ClassName()
।
স্কালায়, কোনও static
ধারণা নেই। সুতরাং স্কালা আপনার প্রোগ্রামের প্রয়োগের জন্য এন্ট্রি পয়েন্ট সরবরাহ করতে একটি সিঙ্গলটন অবজেক্ট তৈরি করে। আপনি যদি সিঙ্গলটন অবজেক্ট তৈরি না করেন তবে আপনার কোডটি সফলভাবে সংকলন করবে তবে কোনও আউটপুট উত্পাদন করবে না। সিঙ্গলটন অবজেক্টের মধ্যে ঘোষিত পদ্ধতিগুলি বিশ্বব্যাপী অ্যাক্সেসযোগ্য। একটি সিঙ্গলটন অবজেক্ট ক্লাস এবং বৈশিষ্ট্যগুলি প্রসারিত করতে পারে।
স্কেল একক বস্তুর উদাহরণ Example
object Singleton{
def main(args:Array[String]){
SingletonObject.hello() // No need to create object.
}
}
object SingletonObject{
def hello(){
println("Hello, This is Singleton Object")
}
}
আউটপুট:
Hello, This is Singleton Object
স্কেলে, যখন আপনার সিঙ্গেলটন অবজেক্টের একই নামের একটি ক্লাস থাকে, তখন তাকে সহকর্মী ক্লাস বলা হয় এবং সিঙ্গলটন অবজেক্টকে সহকর্মী অবজেক্ট বলে।
সহযোগী বর্গ এবং তার সহযোগী বস্তু উভয়ই একই উত্স ফাইলে সংজ্ঞায়িত করা উচিত।
স্কেলা কম্পেনিয়ান অবজেক্টের উদাহরণ
class ComapanionClass{
def hello(){
println("Hello, this is Companion Class.")
}
}
object CompanoinObject{
def main(args:Array[String]){
new ComapanionClass().hello()
println("And this is Companion Object.")
}
}
আউটপুট:
Hello, this is Companion Class.
And this is Companion Object.
স্ক্যালায়, একটি শ্রেণি থাকতে পারে:
1. ডেটা সদস্য
2. সদস্য পদ্ধতি
৩. কনস্ট্রাক্টর ব্লক
৪. নেস্টেড ক্লাস
৫. সুপার ক্লাসের তথ্য ইত্যাদি
আপনাকে অবশ্যই ক্লাসের সমস্ত উদাহরণ ভেরিয়েবলগুলি শুরু করতে হবে। কোনও ডিফল্ট সুযোগ নেই। আপনি যদি অ্যাক্সেসের সুযোগটি নির্দিষ্ট না করেন তবে এটি সর্বজনীন। একটি অবজেক্ট অবশ্যই থাকতে হবে যাতে প্রধান পদ্ধতিটি সংজ্ঞায়িত হয়। এটি আপনার প্রোগ্রামের সূচনা পয়েন্ট সরবরাহ করে। এখানে আমরা ক্লাসের একটি উদাহরণ তৈরি করেছি।
শ্রেণীর উদাহরণ স্ক্যালাল ala
class Student{
var id:Int = 0; // All fields must be initialized
var name:String = null;
}
object MainObject{
def main(args:Array[String]){
var s = new Student() // Creating an object
println(s.id+" "+s.name);
}
}
আমি দুঃখিত, আমি অনেক দেরী করেছি তবে আমি আশা করি এটি আপনাকে সহায়তা করবে।
জাভা ক্লাসের মতো স্কাল ক্লাস তবে স্কোয়া আপনাকে জাভাতে মেইন মেথডের মতো ক্লাসে কোনও এন্ট্রি পদ্ধতি দেয় না। মূল পদ্ধতিটি অবজেক্ট কীওয়ার্ডের সাথে সম্পর্কিত। আপনি অবজেক্ট কীওয়ার্ডটিকে ক্লাসের একটি সিঙ্গলটন অবজেক্ট তৈরির মতো ভাবতে পারেন যা অন্তর্নিহিত সংজ্ঞায়িত হয়।
আরও তথ্য এই নিবন্ধের ক্লাসটি পরীক্ষা করুন এবং স্কালা প্রোগ্রামিংয়ে বস্তুর কীওয়ার্ড
জাভা স্থির শ্রেণীর সাথে জাভাতে কিছুটা প্রসারের সমান, স্থির বৈশিষ্ট্যটির অর্থ স্ট্যাটিক শ্রেণিটি যখন জেভিএম-তে রাখার সময় কোনও বস্তু তৈরি করার প্রয়োজন হয় না, এটি সরাসরি শ্রেণীর নাম এবং একই উদাহরণ দ্বারা ব্যবহার করা যেতে পারে (একই ডাটা স্ট্যাটাস) ) যেখানেই ব্যবহার করা হয় সেখানে ভাগ করা হয়।
একটি ক্লাস অন্য ভাষার মতো অন্য শ্রেণীর মতো। আপনি কিছু বাক্য গঠন পার্থক্য সহ অন্যান্য ভাষার মতো ক্লাসটি সংজ্ঞায়িত করেন।
class Person(val name: String)
val me = new Person("My name")
যাইহোক, অবজেক্টটি কেবল একক বস্তু সহ একটি শ্রেণি। এটি এটিকে আকর্ষণীয় করে তোলে কারণ এটি সহগামী অবজেক্টটি ব্যবহার করে কোনও শ্রেণির স্থির সদস্য তৈরি করতে ব্যবহৃত হতে পারে । এই সহযোগী বস্তুর শ্রেণীর সংজ্ঞাটির ব্যক্তিগত সদস্যদের অ্যাক্সেস রয়েছে এবং আপনি যে শ্রেণীর সংজ্ঞা দিচ্ছেন তার একই নাম রয়েছে।
class Person(var name: String) {
import Person._
def hi(): String = sayHello(name)
}
object Person {
private def sayHello(name: String): String = "Hello " + name
}
val me = new Person("My name")
me.hi()
এছাড়াও, লক্ষণীয় বিষয় হ'ল অবজেক্ট ক্লাসটি আলস্যভাবে তৈরি করা হয়েছে যা অন্য একটি গুরুত্বপূর্ণ পয়েন্ট। সুতরাং, আমাদের কোডে এগুলি প্রয়োজন না হলে এগুলি তাত্ক্ষণিকভাবে চলবে না।
আপনি যদি জেডিবিসির জন্য সংযোগ তৈরির সংজ্ঞা দিচ্ছেন, তবে সিভিলটন অবজেক্টের সাথে জাভাতে যেমন করুন তেমন নকল এড়াতে আপনি সেগুলি ভিতরে তৈরি করতে পারেন।
আপনি যদি জাভা ব্যাকগ্রাউন্ড থেকে আসেন তবে স্কালায় ক্লাসের ধারণা জাভা এর মতোই, তবে স্কেলা ক্যান্টের ক্লাসে স্থির সদস্য থাকে।
স্কালায় থাকা অবজেক্টগুলি সিঙ্গেলটন টাইপের হয় যার মাধ্যমে আপনি অবজেক্টের নাম ব্যবহার করে এর অভ্যন্তরে পদ্ধতিগুলি কল করেন, স্কেলা অবজেক্টে একটি কীওয়ার্ড এবং জাভা অবজেক্টে শ্রেণীর উদাহরণ using