oop java introduction object oriented programming java
Denne videovejledning introducerer OOP-koncepter (Object Oriented Programming) i Java som Object, Class, Arv, Polymorfisme, Abstraktion, Encapsulation osv.:
I softwareprogrammering har vi forskellige typer programmeringssprog. Store sprog blandt dem er enten proceduremæssige eller objektorienterede.
I proceduremæssige programmeringssprog opdeles større problemer i små, løse problemer. Disse små problemer omdannes til procedurer eller funktioner. På denne måde fremhæver det proceduremæssige programmeringssprog funktioner i stedet for data. Således overså proceduremæssige sprog data fuldstændigt, og dermed sikrer de slet ikke datasikkerhed.
Dette problem blev taget hånd om af objektorienteret programmeringssprog. Objektorienteret programmering er en måde at designe og programmere software ved at manipulere objekter, og objekterne er hoveddelen af programmeringen.
Oplev hele vores serie af Java-tutorials til begyndere her .
Hvad du vil lære:
Videovejledninger om OOPS-koncepter
OOPS-koncept i Java - Del 1:
Dybtgående kig på OOPS Concept i Java - Del 2:
Objektorienterede programmeringssprog lægger mere vægt på data end funktionerne. Den objektorienterede programmering (OOP) drejer sig om objekter, dvs. en realtidsenhed.
Dette objekt samler data og de metoder, der fungerer på disse data i en enhed. På denne måde beskyttes dataene fra omverdenen ved at have metoderne inde i objektet. I OOP kommunikerer objekterne med hinanden via beskeder.
Ethvert OOP-sprog understøtter følgende funktioner:
- Klasser
- Indkapsling
- Abstraktion
- Arv
- Polymorfisme
Alle disse funktioner sikrer, at dataene er sikret, og på samme tid kan vi også skrive robuste applikationer. Smalltalk, C ++, Java osv. Er nogle af de objektorienterede programmeringssprog.
I denne vejledning vil vi diskutere det grundlæggende i OOP vedrørende Java-sprog.
Objektorienteret programmering (OOP) i Java
Java er den mest efterspurgte programmeringsevne på nuværende tidspunkt. I Java er alt baseret på objektet. Java har en rodklasse kaldet Object, hvorfra hele Java-funktionaliteten er afledt. Således i denne vejledning vil vi diskutere de vigtigste funktioner i OOP vedrørende Java.
Anbefalet læsning => OOP Interview Spørgsmål og svar
Her skal vi diskutere, hvordan Java understøtter følgende OOP-funktioner.
- Objekt & klasse
- Klasse
- Arv
- Polymorfisme
- Abstraktion
- Indkapsling
Lad os diskutere hvert af disse Java OOP-koncepter i detaljer.
Objekt & klasse
En klasse kan defineres som en designprototype eller en plan. Objekter oprettes ud fra disse tegninger. Den definerer i det væsentlige en fælles type bestående af egenskaber og metoder, der fungerer på disse egenskaber for denne almindelige type. Derefter definerer vi forekomsterne af denne klasse kaldet objekter.
En klasse har mange komponenter som vist i den følgende figur.
Et objekt repræsenterer en virkelighed. I Java er et objekt en forekomst af en klasse. Så en klasse, der er en tegning, kan bruges til at skabe mange objekter. Disse objekter kommunikerer ofte med hinanden ved at sende meddelelser til hinanden gennem metoder.
Videoundervisning: Klasser og objekter
Et objekt har typisk:
- En stat: Objektets egenskaber eller attributter på et bestemt tidspunkt.
- Opførsel: Metoder repræsenterer et objekts opførsel. Metoder definerer også, hvordan objekterne kommunikerer.
- Identitet: Identificerer objektet ved at give det et unikt navn.
For eksempel, hvis vi har en klasse PetAnimals.
Derefter kan vi definere et objekt i denne klasse som følger:
PetAnimals gris = nye PetAnimals.
Her er objektets identitet en gris.
Nedenfor er et program, der demonstrerer klasse og objekt.
//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); } }
Produktion
I ovenstående klasse har vi defineret en klasse Student med to egenskaber roll_No og student_name. Så i hovedmetoden erklærer vi to klasseobjekter, dvs. student1 og student2. Bemærk, at disse objekter oprettes ved hjælp af en ny operator. Når objekterne er oprettet, tildeler vi data til begge objektegenskaberne.
Endelig udskriver vi objektindholdet ved hjælp af '.' (Dot) -operatoren.
Vi lærer mere om klasser og objekter i vores specifikke OOP-tutorialsemner.
Arv
Arv er en af de vigtigste egenskaber ved OOP. Gennem arv fremmer Java genbrugelighed af kode.
Så hvad er en arv i Java?
Arv er en mekanisme i Java, hvor en klasse kan arve egenskaberne for en anden klasse. De egenskaber, der kan nedarves, inkluderer datamedlemmer og metoder i klassen.
Klassen, der arver egenskaberne for en anden klasse, kaldes underklassen. Den arvede klasse er kendt som 'super' -klassen i Java.
Ved at arve klassen arver underklassen ikke kun egenskaberne, men genbruger også koden, da programmøren ikke endnu en gang behøver at skrive koden, når den direkte kan arve den ved hjælp af arv.
I Java opnås arv ved at bruge nøgleordet 'udvider'. Dette udvidede nøgleord bruges i definitionen af klassen og efterfølges af det klassenavn, der skal arves.
For eksempel,hvis der er to klasser, A og B, og A skal arves af B, så skrives denne arv i Java som:
class B extends A { …… }
Som allerede nævnt er her A superklassen eller baseklassen eller forældreklassen. B er en underklasse, afledt klasse eller underordnet klasse.
Arv er yderligere opdelt i følgende typer.
Java understøtter enkelt, multi-niveau og hierarkisk arv.
Bemærk, at Java ikke understøtter flere arv. Java understøtter heller ikke hybrid arv, som er en kombination af flere og hierarkiske arv.
Nedenfor er et eksempel på et program med Single Arv i Java.
//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)); } }
Produktion
I ovenstående program har vi en basisklasse medarbejder. Vi har en anden klasseudvikler, der arver fra medarbejderklassen. I hovedmetoden kan vi se, at ved at erklære et objekt fra udviklerklassen kan vi ikke kun få adgang til egenskaberne for udviklerklassen, men også for medarbejderklassen, da den arves af udviklerklassen.
Polymorfisme
Polymorfisme er endnu et vigtigt træk ved OOP. Polymorfisme er sprogets evne til at tillade objekter eller enheder at antage flere former. For eksempel, en metode, der har forskellige implementeringer, er polymorf i Java.
Polymorfisme er af to typer i Java:
- Overbelastning eller kompilering af polymorfisme: I kompileringstidspolymorfisme løses opkaldet til den polymorfe eller overbelastede metode ved kompileringstidspunktet.
- Overstyring eller kørselstid polymorfisme: I runtime polymorfisme løses opkaldet til en tilsidesat metode i Java-programmet ved runtime.
Vi vil diskutere polymorfisme i detaljer i vores efterfølgende tutorials.
Nedenfor er et eksempel på kompileringstidspolymorfisme i Java, hvor vi har metode tilføj, der er overbelastet til at udføre tilføjelse med forskellige operandtyper.
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)); } }
Produktion
I dette program har vi tre overbelastede metoder med navnet add. Den første metode tager to int-parametre, den næste metode tager tre int-parametre, og den tredje metode tager to dobbelte parametre. Afhængigt af antallet af parametre løses metodeopkaldet ved kompileringstidspunktet, og det relevante opkald foretages.
Abstraktion
Ved hjælp af dataabstraktion udsætter vi kun de væsentlige dele af applikationen, der gøres tilgængelige for brugeren. For eksempel, hvis vi har en bil, er vi ikke bekymrede over de interne komponenter i bilen, men snarere betragter vi kun bilen som en helhed.
Ved hjælp af en dataabstraktionsmekanisme identificerer vi kun de nødvendige detaljer og ignorerer de irrelevante detaljer. Java bruger abstrakte klasser og grænseflader for at opnå abstraktion. Grænseflader er 100% abstrakte, da de kun har metodeprototyper og ikke deres definition.
Nedenstående eksempel viser en abstrakt klasse og dens anvendelse.
// 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(); } }
Produktion
I ovenstående program har vi en abstrakt klasse PetAnimals. I dette har vi en abstrakt metode 'animalSound'. Derefter opretter vi en hundeklasse og arver PetAnimals-klassen. I hundeklassen tilsidesætter vi metoden animalSound.
hvor mange typer filer er der? python
Indkapsling
Indkapsling skjuler data eller beskytter dataene. Ved programmering opnår vi indkapsling ved at indpakke data og metoder, der fungerer på disse data under en enkelt enhed.
Videovejledning: indkapsling og polymorfisme i Java
En klasse kan ses som en indkapslingsenhed, dvs. vi har dataelementer og metoder, der fungerer på disse dataelementer som samlet i en enkelt enhed.
Korrekt indkapsling kan opnås ved at gøre datamedlemmer private og have metoderne til at fungere på disse data som offentlige, så data er fuldstændig beskyttet mod eksterne enheder.
Nedenstående Java-program viser indkapslingskonceptet.
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()); } }
Produktion
I ovenstående program har vi en klasse Customer_Account.
I denne klasse har vi datamedlemmer, som alle er private. Derefter giver vi for hvert privat felt getter- og settermetoder til henholdsvis at læse og indstille værdier. Disse getters og setters er offentlige. På denne måde beskytter vi datafelterne ved ikke at give dem adgang direkte uden for klassen.
Der er kun adgang til dem gennem getters og settere. Dette viser indkapslingen, som vi beskrev ovenfor.
Ofte stillede spørgsmål
Q # 1) Hvad menes med objektorienteret programmering?
Svar: Objektorienteret programmering (OOP) er et softwareparadigme, der drejer sig om data. I OOP lægges der vægt på data, og dermed udtrykkes problemer i form af objekter, der er enheder, der består af data eller felter og metoder, der fungerer på disse datafelter.
Ved at gøre dette anvendes flere kendetegn ved OOP som arv, polymorfisme, abstraktion og indkapsling for at sikre datasikkerhed, genanvendelighed osv.
Q # 2) Hvad er de 4 grundlæggende principper for OOP?
Svar:Objektorienteret programmering (OOP) har fire grundlæggende principper:
- Arv
- Polymorfisme
- Abstraktion
- Indkapsling
De kaldes også fire søjler i OOP.
Q # 3) Hvorfor kaldes Java Objektorienteret?
Svar: Java har et rodklasseobjekt, hvorfra vi udleder alle de andre funktioner i Java. Således uden klasse og objekt kan vi ikke have et Java-program. Derfor kaldes Java OOP-sprog.
Q # 4) Er Java rent objektorienteret?
Svar: Nej, Java er ikke et rent objektorienteret sprog. Da Java også leverer primitive datatyper som int, char, float, double, long osv., Er det ikke klassificeret som et rent OOP-sprog.
Q # 5) Hvad er forskellen mellem C ++ og Java?
Svar: Både C ++ og Java er objektorienterede sprog og understøtter OOP-funktioner. Men C ++ er et kompileret sprog. Java er derimod udarbejdet såvel som et fortolket sprog.
Java-tolken udfører bytekoden ved kørsel og genererer output, der gør den platformuafhængig. C ++ er dog platformafhængig.
Mere om OOPS Concept
Klasse
Klassen er en plan / prototype af et objekt i den virkelige verden, og det modellerer tilstanden og opførelsen af det virkelige objekt.
Klassedeklaration
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. }
Objekt
Softwareobjekter er som objekter i det virkelige liv med tilstand og adfærd. Staten lagres som et felt og udsætter dets adfærd som metoder.
Her er rummet som generelt design. Inden for dette rum skal du designe en stue, køkkenrum, soveværelse.
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(); }
Her skal 'Keepthings ()' -metoden udføre de grundlæggende funktioner, der kræves til værelset, og den skal have yderligere specifikation i henhold til 'stue' -klassen og 'madlavningsrum' -klassen. Så de to klasser skal arve metoderne i 'rum' klassen.
Arv
Adfærd (metoder) og tilstand for en klasse arvet til den anden klasse kaldes arv. Metoderne og tilstanden arves fra forældreklassen til barneklassen.
Så,
Class CookingRoom extends Room{ }
Class LivingRoom extends Room{ }
Polymorfisme
I biologi henviser polymorfisme til krydderier, som kan have mange forskellige former.
Med det samme koncept i objektorienteret programmering kan barneklassen arve sine overordnede klassemetoder, og det kan også tilføje unikke funktioner til den adfærd. Polymorfisme kan opnås ved metodeoverbelastning eller tilsidesættelse.
Overbelastning
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)); } }
Tilsidesættelse
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(); } }
PRODUKTION: Her tilsidesætter barneklassemetoden overordnet klassemetode.
Super nøgleord
Super nøgleord er en referencevariabel, der bruges til at henvise til det umiddelbare overordnede klasseobjekt. Med super nøgleord kan du henvise overordnede klassemetoden eller variabler eller konstruktør.
Dette nøgleord
Dette nøgleord bruges til at henvise til det aktuelle klasseobjekt. Ved hjælp af dette nøgleord kan du få adgang til den aktuelle klasseinstansvariabel eller aktuelle klassemetode. Dette kan sendes som et argument i metodekaldet.
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()); } }
Bygger
Java-konstruktører er som metoder, der kaldes, når objektet oprettes til klassen. Konstruktøren skal have samme navn som klassen.
Class Myclass{ Myclass(); Method1() { } }
Mens du opretter et objekt til klassen, er Myclass myobj = new Myclass ();
Konstruktormetoden kaldes. Konstruktøren oprettes automatisk af Java-kompilator for alle klasser som standard.
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); } }
Regler, der skal følges for konstruktøren:
- Konstruktøren skal have samme navn som klassens navn.
- Konstruktøren skal ikke have en returerklæring.
Punkter, der skal bemærkes:
- I objektorienteret programmering er objekter den vigtigste del af programmeringen.
- OOP-begreber er objekt, klasse, arv, polymorfisme, konstruktør.
- super nøgleord, der bruges til at henvise til overordnede klassemedlemmer, og det her nøgleord bruges til at henvise til et aktuelt klasseobjekt.
- Konstruktører er som metoder, der kaldes, når objektet oprettes til klassen.
Konklusion
Denne vejledning dækkede det grundlæggende i vigtige objektorienterede funktioner, der understøttes af Java. Dette er kun en introduktionsvejledning om OOPS i Java. Vi vil dække alle emnerne detaljeret i vores efterfølgende tutorials. Java understøtter fire søjler i OOP, dvs. polymorfisme, arv, abstraktion og indkapsling.
Bortset fra disse funktioner understøtter Java også de andre funktioner og OOP-konstruktioner som indeslutning, sammenlægning, videregivelse af meddelelser osv., Som vil blive diskuteret i vores kommende tutorials.
Anbefalet læsning
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger
- Hvad er abstraktion i Java - lær med eksempler
- Hvad er arv i Java - Vejledning med eksempler
- Hvad er polymorfisme i Java - vejledning med eksempler
- Indkapsling i Java: Komplet vejledning med eksempler
- Typer af arv i Java - Single Vs Multiple Arv
- OOPS-koncepter i C #: Objektorienteret tutorial til programmeringskoncept
- Objektorienteret programmering i C ++