oop java introduction object oriented programming java
Ten samouczek wideo przedstawi koncepcje OOP (Object Oriented Programming) w Javie, takie jak obiekt, klasa, dziedziczenie, polimorfizm, abstrakcja, enkapsulacja itp .:
W programowaniu mamy do czynienia z różnymi typami języków programowania. Wśród nich główne języki mają charakter proceduralny lub obiektowy.
W proceduralnych językach programowania większe problemy są dzielone na małe problemy, które można rozwiązać. Te małe problemy są przekształcane w procedury lub funkcje. W ten sposób język programowania proceduralnego kładzie nacisk na funkcje, a nie na dane. Dlatego języki proceduralne całkowicie zaniedbały dane, a tym samym w ogóle nie zapewniają ich bezpieczeństwa.
Ten problem został rozwiązany przez język programowania obiektowego. Programowanie zorientowane obiektowo to sposób projektowania i programowania oprogramowania poprzez manipulowanie obiektami, a obiekty są główną częścią programowania.
Odkryj całą naszą serię samouczków Java dla początkujących tutaj .
Czego się nauczysz:
Samouczki wideo na temat koncepcji OOPS
Koncepcja OOPS w Javie - Część 1:
Dogłębne spojrzenie na koncepcję OOPS w Javie - część 2:
Języki programowania zorientowane obiektowo kładą większy nacisk na dane niż funkcje. Programowanie obiektowe (OOP) obraca się wokół obiektów, tj. Bytów czasu rzeczywistego.
Ten obiekt łączy dane i metody, które operują na tych danych w jednej jednostce. W ten sposób dane są chronione przed światem zewnętrznym dzięki zastosowaniu metod wewnątrz obiektu. W OOP obiekty komunikują się ze sobą za pomocą komunikatów.
Każdy język OOP obsługuje następujące funkcje:
- Zajęcia
- Kapsułkowanie
- Abstrakcja
- Dziedzictwo
- Wielopostaciowość
Wszystkie te cechy zapewniają bezpieczeństwo danych, a jednocześnie możemy pisać solidne aplikacje. Smalltalk, C ++, Java itp. To tylko niektóre z obiektowych języków programowania.
W tym samouczku omówimy podstawy OOP dotyczące języka Java.
Programowanie obiektowe (OOP) w Javie
Java jest obecnie najbardziej poszukiwaną umiejętnością programowania. W Javie wszystko opiera się na obiekcie. Java ma klasę główną o nazwie Object, z której pochodzi cała funkcjonalność języka Java. Dlatego w tym samouczku omówimy główne cechy OOP dotyczące Javy.
Zalecana lektura => Pytania i odpowiedzi do wywiadu OOP
Tutaj omówimy, w jaki sposób Java obsługuje następujące funkcje OOP.
- Obiekt i klasa
- Klasa
- Dziedzictwo
- Wielopostaciowość
- Abstrakcja
- Kapsułkowanie
Omówmy szczegółowo każdą z tych koncepcji Java OOP.
Obiekt i klasa
Klasę można zdefiniować jako prototyp projektu lub plan. Obiekty są tworzone z tych planów. Zasadniczo definiuje typowy typ składający się z właściwości i metod, które działają na tych właściwościach dla tego wspólnego typu. Następnie definiujemy wystąpienia tej klasy zwane obiektami.
Klasa ma wiele komponentów, jak pokazano na poniższym rysunku.
Obiekt reprezentuje byt z życia wzięty. W Javie obiekt jest instancją klasy. Tak więc klasa, która jest planem, może zostać użyta do stworzenia wielu obiektów. Obiekty te często komunikują się ze sobą, przekazując sobie komunikaty za pomocą różnych metod.
Samouczek wideo: klasy i obiekty
Obiekt zazwyczaj ma:
- Stan: Właściwości lub atrybuty obiektu w określonym czasie.
- Zachowanie: Metody reprezentują zachowanie obiektu. Metody określają również sposób komunikacji obiektów.
- Tożsamość: Identyfikuje obiekt, nadając mu unikalną nazwę.
Na przykład, jeśli mamy klasę PetAnimals.
Następnie możemy zdefiniować obiekt tej klasy w następujący sposób:
PetAnimals pig = nowy PetAnimals.
Tutaj tożsamością obiektu jest świnia.
Poniżej podano program demonstrujący klasę i obiekt.
//student class class Student{ int roll_No; String student_name; } class Main{ public static void main(String args()){ //Create objects of class Student Student student1=new Student(); Student student2=new Student(); //Initialize Student class objects student1.roll_No=101; student1.student_name='Lisa'; student2.roll_No=102; student2.student_name='Dan'; //Print object data System.out.println('Student 1 Details: ' + student1.roll_No+' '+student1.student_name); System.out.println('Student 2 Details: ' + student2.roll_No+' '+student2.student_name); } }
Wynik
W powyższej klasie zdefiniowaliśmy klasę Student z dwiema właściwościami roll_No i student_name. Następnie w metodzie głównej deklarujemy dwa obiekty klas tj. Student1 i student2. Zauważ, że te obiekty są tworzone przy użyciu nowego operatora. Po utworzeniu obiektów przypisujemy dane do obu właściwości obiektu.
Na koniec drukujemy zawartość obiektu za pomocą operatora „.” (Kropka).
Dowiemy się więcej o klasach i obiektach w naszych konkretnych tematach samouczków OOP.
Dziedzictwo
Dziedziczenie jest jedną z najważniejszych cech OOP. Poprzez dziedziczenie Java promuje możliwość ponownego wykorzystania kodu.
Więc czym jest dziedziczenie w Javie?
Dziedziczenie to mechanizm w Javie, w którym jedna klasa może dziedziczyć właściwości innej klasy. Właściwości, które mogą być dziedziczone, obejmują elementy członkowskie danych i metody klasy.
Klasa, która dziedziczy właściwości innej klasy, nazywana jest podklasą. Klasa dziedziczona jest w Javie nazywana „super” klasą.
Dziedzicząc klasę, podklasa nie tylko dziedziczy właściwości, ale także ponownie wykorzystuje kod, ponieważ programista nie musi ponownie pisać kodu, jeśli może bezpośrednio odziedziczyć go za pomocą dziedziczenia.
W Javie dziedziczenie uzyskuje się za pomocą słowa kluczowego „extends”. To słowo kluczowe extends jest używane w definicji klasy, po którym następuje nazwa klasy, która ma być dziedziczona.
Na przykład,jeśli istnieją dwie klasy, A i B, a A ma być dziedziczone przez B, to dziedziczenie to jest zapisane w Javie jako:
class B extends A { …… }
Jak już wspomniano, tutaj A jest klasą nadrzędną lub klasą bazową lub klasą nadrzędną. B jest podklasą, klasą pochodną lub klasą podrzędną.
Dziedziczenie dzieli się dalej na następujące typy.
Java obsługuje dziedziczenie pojedyncze, wielopoziomowe i hierarchiczne.
Należy pamiętać, że Java nie obsługuje wielokrotnego dziedziczenia. Java nie obsługuje również dziedziczenia hybrydowego, które jest połączeniem dziedziczenia wielokrotnego i hierarchicznego.
Poniżej podano przykładowy program Single Inheritance w Javie.
//base class class Employee{ float salary=50000; } //derived class class Developer extends Employee{ int bonus=20000; } class Main{ public static void main(String args()){ //declare Developer class object and access properties of base and derived class Developer p=new Developer(); System.out.println('Inheritance in Java'); System.out.println('Developer salary: '+p.salary); System.out.println('Bonus declared for Developer: '+p.bonus); System.out.println('Developer Total Earnings: ' + (p.salary + p.bonus)); } }
Wynik
W powyższym programie mamy klasę podstawową Employee. Mamy kolejną klasę Developer, która dziedziczy po klasie Employee. W metodzie głównej widzimy, że deklarując obiekt klasy Developer uzyskujemy dostęp nie tylko do właściwości klasy Developer, ale także klasy Employee, która jest dziedziczona przez klasę Developer.
Wielopostaciowość
Polimorfizm to kolejna ważna cecha OOP. Polimorfizm to zdolność języka do pozwalania obiektom lub bytom na przyjmowanie wielu form. Na przykład, metoda, która ma różne implementacje, jest polimorficzna w Javie.
W Javie polimorfizm występuje w dwóch typach:
- Polimorfizm przeciążenia lub czasu kompilacji: W przypadku polimorfizmu w czasie kompilacji wywołanie metody polimorficznej lub przeciążonej jest rozwiązywane w czasie kompilacji.
- Zastępowanie lub polimorfizm w czasie wykonywania: W polimorfizmie w czasie wykonywania wywołanie metody przesłoniętej w programie Java jest rozwiązywane w czasie wykonywania.
Szczegółowo omówimy polimorfizm w naszych kolejnych samouczkach.
Poniżej podano przykład polimorfizmu w czasie kompilacji w Javie, w którym mamy metodę add, która jest przeciążona w celu wykonania dodawania z różnymi typami operandów.
class Numbers_Sum { //add method : takes two int parameters public int add(int val1, int val2) { return (val1 + val2); } // overloaded add : takes three int parameters public int add(int val1, int val2, int val3) { return (val1 + val2 + val3); } //overloaded add: takes two double parameters public double add(double val1, double val2) { return (val1 + val2); } } class Main{ public static void main(String args()) { //create an object of Numbers_Sum class and call overloaded functions Numbers_Sum numsum = new Numbers_Sum(); System.out.println('Polymorphism in Java'); System.out.println('add(int, int): ' + numsum.add(15, 18)); System.out.println('add(int, int, int): ' + numsum.add(5, 10, 20)); System.out.println('add(double,double): ' + numsum.add(5.5, 15.5)); } }
Wynik
W tym programie mamy trzy przeciążone metody o nazwie add. Pierwsza metoda przyjmuje dwa parametry int, następna metoda przyjmuje trzy parametry int, a trzecia metoda przyjmuje dwa parametry double. W zależności od liczby parametrów wywołanie metody jest rozstrzygane w czasie kompilacji i wykonywane jest odpowiednie wywołanie.
Abstrakcja
Korzystając z abstrakcji danych, ujawniamy tylko istotne części aplikacji, które są udostępniane użytkownikowi. Na przykład, jeśli mamy samochód, nie przejmujemy się wewnętrznymi komponentami samochodu, a raczej bierzemy pod uwagę tylko samochód jako całość.
Korzystając z mechanizmu abstrakcji danych, identyfikujemy tylko niezbędne szczegóły i ignorujemy nieistotne szczegóły. Java używa abstrakcyjnych klas i interfejsów do uzyskania abstrakcji. Interfejsy są w 100% abstrakcyjne, ponieważ mają tylko prototypy metod, a nie ich definicję.
Poniższy przykład przedstawia klasę abstrakcyjną i jej użycie.
// Abstract class declaration abstract class PetAnimal { // Abstract method: should be defined in derived class public abstract void animalSound(); // non-abstract method public void print() { System.out.println('This method is example of abstraction'); } } // Derived class class Dog extends PetAnimal { //abstract method defined here public void animalSound() { System.out.println('The doggy barks'); } } class Main { public static void main(String() args) { Dog doggy = new Dog(); // Instantiate derived class and call methods doggy.animalSound(); doggy.print(); } }
Wynik
W powyższym programie mamy abstrakcyjną klasę PetAnimals. W tym przypadku mamy abstrakcyjną metodę „animalSound”. Następnie tworzymy klasę Dog i dziedziczymy klasę PetAnimals. W klasie Dog nadpisujemy metodę animalSound.
nie mam domyślnej bramy
Kapsułkowanie
Hermetyzacja to ukrywanie lub ochrona danych. W programowaniu hermetyzację osiągamy poprzez zawijanie danych i metod działających na tych danych w jednej jednostce.
Samouczek wideo: Hermetyzacja i polimorfizm w Javie
Klasę można postrzegać jako jednostkę hermetyzacji, tj. Mamy elementy składowe danych i metody działające na tych elementach danych w pakiecie w jednej jednostce.
Prawidłową hermetyzację można osiągnąć poprzez nadanie członkom danych prywatności i udostępnienie metod działających na tych danych jako publicznych, tak aby dane były całkowicie chronione przed podmiotami zewnętrznymi.
Poniższy program w języku Java przedstawia koncepcję enkapsulacji.
class Customer_Account { //private data of class private long customer_accountNo; private String customer_name,customer_email; private float customer_salary; //public getter/setter methods to access private data public long getAcc_no() { return customer_accountNo; } public void setAcc_no(long acc_no) { this.customer_accountNo = acc_no; } public String getName() { return customer_name; } public void setName(String name) { this.customer_name = name; } public String getEmail() { return customer_email; } public void setEmail(String email) { this.customer_email = email; } public float getSalary() { return customer_salary; } public void setSalary(float salary) { this.customer_salary = salary; } } public class Main { public static void main(String() args) { //create an object of customer_Account class Customer_Account acc=new Customer_Account(); //use setter methods to set values acc.setAcc_no(123458765432L); acc.setName('SoftwareTestingHelp'); acc.setEmail('sth@sth.com'); acc.setSalary(65000f); //use getter methods to read values System.out.println('Customer Account Number: ' + acc.getAcc_no()); System.out.println('Customer Account Details:'); System.out.println(' Customer Name: '+acc.getName()+'
'+ ' Customer Email: ' + acc.getEmail()+'
' + ' Customer Salary: ' +acc.getSalary()); } }
Wynik
W powyższym programie mamy klasę Customer_Account.
W tej klasie mamy członków danych, które są prywatne. Następnie dla każdego pola prywatnego udostępniamy metody pobierające i ustawiające odpowiednio do odczytu i ustawienia wartości. Te metody pobierające i ustawiające są publiczne. W ten sposób chronimy pola danych, nie pozwalając im na bezpośredni dostęp spoza klasy.
Dostęp do nich można uzyskać tylko poprzez metody pobierające i ustawiające. To pokazuje hermetyzację, którą opisaliśmy powyżej.
Często Zadawane Pytania
P # 1) Co oznacza programowanie obiektowe?
Odpowiedź: Programowanie obiektowe (OOP) to paradygmat oprogramowania, który obraca się wokół danych. W OOP nacisk kładziony jest na dane, dlatego problemy są wyrażane w kategoriach obiektów, które są bytami składającymi się z danych lub pól i metodami operującymi na tych polach danych.
W ten sposób kilka wyróżniających cech OOP, takich jak dziedziczenie, polimorfizm, abstrakcja i enkapsulacja, jest stosowanych w celu zapewnienia bezpieczeństwa danych, możliwości ponownego wykorzystania itp.
P # 2) Jakie są 4 podstawowe zasady OOP?
Odpowiedź:Programowanie obiektowe (OOP) ma cztery podstawowe zasady:
- Dziedzictwo
- Wielopostaciowość
- Abstrakcja
- Kapsułkowanie
Nazywa się je również czterema filarami OOP.
P # 3) Dlaczego Java jest nazywana zorientowaną obiektowo?
Odpowiedź: Java ma obiekt klasy głównej, z którego wywodzimy wszystkie inne cechy Javy. Zatem bez klasy i obiektu nie możemy mieć programu Java. Stąd Java jest nazywana językiem OOP.
P # 4) Czy Java jest czysto obiektowa?
Odpowiedź: Nie, Java nie jest czystym językiem zorientowanym obiektowo. Ponieważ Java udostępnia również prymitywne typy danych, takie jak int, char, float, double, long itp., Nie jest klasyfikowana jako czysty język OOP.
P # 5) Jaka jest różnica między C ++ a Javą?
Odpowiedź: Zarówno C ++, jak i Java są językami zorientowanymi obiektowo i obsługują funkcje OOP. Ale C ++ jest językiem kompilowanym. Z drugiej strony Java jest kompilowana jako język interpretowany.
Interpreter języka Java wykonuje kod bajtowy w czasie wykonywania i generuje dane wyjściowe, dzięki czemu jest niezależny od platformy. C ++ jest jednak zależne od platformy.
Więcej na temat koncepcji OOPS
Klasa
Klasa jest planem / prototypem obiektu ze świata rzeczywistego i modeluje stan i zachowanie tego obiektu ze świata rzeczywistego.
Deklaracja klasy
class MyClass { // field, constructor, and // method declarations }
Class room(){ //room should have dimension. Dimension is attribute. //in the room, we are going keep things. Keeping is the function we are going to do. Keepthings (); this is a method in java. }
Obiekt
Obiekty oprogramowania są jak rzeczywiste obiekty ze stanem i zachowaniem. Stan zostanie zapisany jako pole i ujawni jego zachowanie jako metody.
Tutaj pokój jest jak ogólny projekt. W tym pomieszczeniu należy zaprojektować salon, kuchnię, sypialnię.
Class CookingRoom(){ Dimension is attribute. //here we should have method to keep cooking things. Keepthings(){ This method is same like room class keep things method. but it should have some more features to hold cooking items. } cooking(); }
Class LivingRoom(){ Dimension is attribute. //here we should have method to keep Living Room things. Keepthings(){ This method is same like room class keep things method. but it should have some more features to hold living room items(like tv etc). } watching tv(); }
Tutaj metoda „Keepthings ()” powinna wykonywać podstawowe funkcje wymagane dla pomieszczenia i powinna mieć dodatkowe specyfikacje zgodnie z klasą „living room” i wymaganiem „kitchen room”. Zatem obie klasy powinny dziedziczyć metody z klasy „room”.
Dziedzictwo
Zachowanie (metody) i stan jednej klasy dziedziczone przez drugą klasę nazywane są dziedziczeniem. Metody i stan są dziedziczone z klasy nadrzędnej do klasy podrzędnej.
Więc,
Class CookingRoom extends Room{ }
Class LivingRoom extends Room{ }
Wielopostaciowość
W biologii polimorfizm odnosi się do przypraw, które mogą mieć wiele różnych form.
Zgodnie z tą samą koncepcją w programowaniu obiektowym, klasa potomna może dziedziczyć swoje metody klasy nadrzędnej, a także może dodawać unikalne funkcje do tego zachowania. Polimorfizm można osiągnąć przez przeciążenie lub nadpisanie metody.
Przeciążenie
public class OverloadDemo { public int add( int a,int b) { int rs=a+b; return rs; } public int add( int a,int b,int c) { int rs=a+b+c; return rs; } public static void main(String() args) { OverloadDemo ov=new OverloadDemo(); System.out.println(ov.add(23,56,45)); System.out.println(ov.add(23,56)); } }
Nadrzędny
public class Bicycle { int wheels=2; String seat; public void riding() { System.out.println('bicycle is used for riding'); } }
public class RoadBicycle extends Bicycle{ public void riding() { System.out.println('RoadBicycle is used for road riding'); } }
public class TestBicycle { public static void main(String() args) { Bicycle b=new RoadBicycle(); b.riding(); } }
WYNIK: Tutaj metoda klasy potomnej przesłania metodę klasy nadrzędnej.
Super słowo kluczowe
Słowo kluczowe Super jest zmienną referencyjną używaną do odwoływania się do bezpośredniego obiektu klasy nadrzędnej. Za pomocą słowa kluczowego super można odwołać się do metody lub zmiennych klasy nadrzędnej lub konstruktora.
To słowo kluczowe
To słowo kluczowe służy do odwoływania się do bieżącego obiektu klasy. Za pomocą tego słowa kluczowego można uzyskać dostęp do zmiennej wystąpienia bieżącej klasy lub metody bieżącej klasy. Można to przekazać jako argument w wywołaniu metody.
public class DemoThisKeyword { private int accno; private int balance; public void setvalues(int accno,int balance) { this.accno=accno; this.balance=balance; } public int showdata() { System.out.println(accno); System.out.println(balance); return balance; } public static void main(String() args) { // TODO Auto-generated method stub DemoThisKeyword obj =new DemoThisKeyword(); obj.setvalues(11, 100); obj.showdata(); System.out.println(obj.showdata()); } }
Budowniczy
Konstruktory Java są podobne do metod, które będą wywoływane podczas tworzenia obiektu dla klasy. Konstruktor powinien mieć taką samą nazwę jak klasa.
Class Myclass{ Myclass(); Method1() { } }
Podczas tworzenia obiektu dla klasy Myclass myobj = new Myclass ();
Zostanie wywołana metoda konstruktora. Konstruktor jest domyślnie tworzony automatycznie przez kompilator języka Java dla wszystkich klas.
public class ConstructorExampleProgram { int employee_age; String employee_name; int employee_salary; //Default constructor ConstructorExampleProgram(){ this.employee_name=Bob'; this.employee_age=30; this.employee_salary=7000; } //Parameterized constructor ConstructorExampleProgram(String n,int a,int b){ this.employee_name=n; this.employee_age=a; this.employee_salary=b; } public static void main(String args()){ ConstructorExampleProgram obj1 = new ConstructorExampleProgram(); ConstructorExampleProgram obj2 = new ConstructorExampleProgram('clare', 56,7500); System.out.println(obj1.employee_name+' '+obj1.employee_age+' '+obj1.employee_salary); System.out.println(obj2.employee_name+' '+obj2.employee_age+' '+obj2.employee_salary); } }
Zasady obowiązujące konstruktora:
- Konstruktor powinien mieć taką samą nazwę jak nazwa klasy.
- Konstruktor nie powinien zawierać instrukcji return.
Punkty, na które należy zwrócić uwagę:
- W programowaniu zorientowanym obiektowo obiekty są główną częścią programowania.
- Pojęcia OOP to obiekt, klasa, dziedziczenie, polimorfizm, konstruktor.
- Wspaniały słowo kluczowe używane do odwoływania się do członków klasy nadrzędnej i to słowo kluczowe jest używane w odniesieniu do aktualnego obiektu klasy.
- Konstruktory są podobne do metod, które będą wywoływane podczas tworzenia obiektu dla klasy.
Wniosek
W tym samouczku omówiono podstawy ważnych funkcji obiektowych obsługiwanych przez język Java. To jest tylko wprowadzenie do OOPS w Javie. Szczegółowo omówimy wszystkie tematy w naszych kolejnych samouczkach. Java obsługuje cztery filary OOP, tj. Polimorfizm, dziedziczenie, abstrakcję i enkapsulację.
Oprócz tych funkcji, Java obsługuje także inne funkcje i konstrukcje OOP, takie jak zawieranie, agregacja, przekazywanie wiadomości itp., Które zostaną omówione w naszych nadchodzących samouczkach.
rekomendowane lektury
- Samouczek JAVA dla początkujących: ponad 100 praktycznych samouczków wideo Java
- Czym jest abstrakcja w Javie - ucz się na przykładach
- Co to jest dziedziczenie w Javie - samouczek z przykładami
- Co to jest polimorfizm w Javie - samouczek z przykładami
- Hermetyzacja w Javie: Kompletny samouczek z przykładami
- Rodzaje dziedziczenia w Javie - dziedziczenie pojedyncze i wielokrotne
- Pojęcia OOPS w C #: samouczek dotyczący programowania zorientowanego obiektowo
- Programowanie obiektowe w C ++