oop java introduction object oriented programming java
Ovaj video vodič će uvesti koncepte OOP (objektno orijentirano programiranje) na Javi, kao što su Objekt, Klasa, Nasljeđivanje, Polimorfizam, Apstrakcija, Inkapsulacija itd.:
U softverskom programiranju imamo razne vrste programskih jezika. Glavni jezici među njima su proceduralne ili objektno orijentirane prirode.
U proceduralnim programskim jezicima veći se problemi raščlanjuju na male rješive probleme. Ti se mali problemi pretvaraju u postupke ili funkcije. Na ovaj način proceduralni programski jezik naglašava funkcije, a ne podatke. Stoga su proceduralni jezici u potpunosti zanemarili podatke i stoga uopće ne osiguravaju sigurnost podataka.
Za ovaj problem pobrinuo se objektno orijentirani programski jezik. Objektno orijentirano programiranje način je dizajniranja i programiranja softvera manipuliranjem objektima, a objekti su glavni dio programiranja.
Otkrijte cijelu našu seriju Java vodiča za početnike ovdje .
Što ćete naučiti:
Video tutorijali o konceptima OOPS-a
OOPS koncept u Javi - 1. dio:
Dubinski pregled OOPS koncepta u Javi - 2. dio:
Objektno orijentirani programski jezici naglašavaju podatke više od funkcija. Objektno orijentirano programiranje (OOP) vrti se oko objekata tj. Entiteta u stvarnom vremenu.
Ovaj objekt objedinjuje podatke i metode koje djeluju na te podatke u jednoj jedinici. Na taj su način podaci zaštićeni od vanjskog svijeta postojanjem metoda unutar objekta. U OOP-u objekti međusobno komuniciraju putem poruka.
Bilo koji OOP jezik podržava sljedeće značajke:
- Nastava
- Kapsulacija
- Apstrakcija
- Nasljeđivanje
- Polimorfizam
Sve ove značajke osiguravaju zaštitu podataka, a istovremeno možemo pisati i robusne aplikacije. Smalltalk, C ++, Java itd. Neki su od objektno orijentiranih programskih jezika.
U ovom uputstvu razgovarat ćemo o osnovama OOP-a koje se tiču Java jezika.
Objektno orijentirano programiranje (OOP) na Javi
Java je trenutno najtraženija programska vještina. U Javi se sve temelji na objektu. Java ima korijensku klasu pod nazivom Objekt iz koje je izvedena cjelokupna funkcionalnost Java. Stoga ćemo u ovom vodiču razgovarati o glavnim značajkama OOP-a koje se tiču Jave.
Preporučena literatura => OOP pitanja i odgovori za intervjue
Ovdje ćemo razgovarati o tome kako Java podržava sljedeće OOP značajke.
- Objekt i klasa
- Razred
- Nasljeđivanje
- Polimorfizam
- Apstrakcija
- Kapsulacija
Razmotrimo detaljno svaki od ovih Java OOP koncepata.
Objekt i klasa
Klasa se može definirati kao prototip dizajna ili kao nacrt. Predmeti su stvoreni iz ovih nacrta. U osnovi definira uobičajeni tip koji se sastoji od svojstava i metoda koje djeluju na ta svojstva za ovaj uobičajeni tip. Zatim definiramo instance ove klase nazvane objektima.
Klasa ima mnogo komponenata kao što je prikazano na sljedećoj slici.
Predmet predstavlja entitet iz stvarnog života. U Javi je objekt instanca klase. Dakle, klasa koja je nacrt može se koristiti za stvaranje mnogih objekata. Ti objekti često međusobno komuniciraju tako što međusobno prenose poruke metodama.
Video vodič: Predavanja i predmeti
Objekt obično ima:
- Država: Svojstva ili atributi objekta u određeno vrijeme.
- Ponašanje: Metode predstavljaju ponašanje predmeta. Metode također definiraju način na koji objekti komuniciraju.
- Identitet: Identificira objekt dajući mu jedinstveno ime.
Na primjer, ako imamo razred PetAnimals.
Tada možemo definirati objekt ove klase na sljedeći način:
PetAnimals pig = novi PetAnimals.
Ovdje je identitet predmeta svinja.
Dolje je dan program koji prikazuje klasu i 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); } }
Izlaz
U gornjem razredu definirali smo razred Student s dva svojstva roll_No i student_name. Zatim u glavnoj metodi deklariramo dva predmeta klase, tj. Student1 i student2. Imajte na umu da su ti objekti stvoreni pomoću novog operatora. Jednom kada su objekti stvoreni, dodijeljujemo podatke za oba svojstva objekta.
Na kraju, ispisujemo sadržaj predmeta pomoću operatora ‘.’ (Točka).
Naučit ćemo više o klasama i objektima u našim specifičnim temama o OOP tutorialima.
Nasljeđivanje
Nasljeđivanje je jedna od najvažnijih karakteristika OOP-a. Nasljeđivanjem, Java promiče ponovnu upotrebu koda.
Pa, što je nasljedstvo u Javi?
Nasljeđivanje je mehanizam u Javi u kojem jedna klasa može naslijediti svojstva druge klase. Svojstva koja se mogu naslijediti uključuju članove podataka i metode klase.
Klasa koja nasljeđuje svojstva druge klase naziva se podklasa. Naslijeđena klasa poznata je kao 'super' klasa na Javi.
Nasljeđivanjem klase, podrazred ne samo nasljeđuje svojstva, već i ponovno koristi kôd, jer programer ne mora ponovno pisati kôd kad ga može izravno naslijediti pomoću nasljeđivanja.
U Javi se nasljeđivanje postiže korištenjem ključne riječi 'extends'. Ova se ključna riječ extends koristi u definiciji klase, a slijedi je naziv klase koji se nasljeđuje.
Na primjer,ako postoje dvije klase, A i B, a A nasljeđuje B, tada je to nasljeđe napisano na Javi kao:
class B extends A { …… }
Kao što je već spomenuto, ovdje je A superrazred ili osnovna klasa ili roditeljska klasa. B je podrazred, izvedena klasa ili podređena klasa.
Nasljeđivanje se dalje dijeli na sljedeće vrste.
Java podržava jednostruko, višerazinsko i hijerarhijsko nasljeđivanje.
Imajte na umu da Java ne podržava više nasljeđivanja. Java također ne podržava hibridno nasljeđivanje koje je kombinacija višestrukog i hijerarhijskog nasljeđivanja.
Slijedi primjer programa pojedinačnog nasljeđivanja na Javi.
//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)); } }
Izlaz
U gore navedenom programu imamo osnovnu klasu zaposlenika. Imamo još jedan programer klase koji nasljeđuje klasu Employee. U glavnoj metodi možemo vidjeti da deklariranjem objekta klase Developer možemo pristupiti ne samo svojstvima klase Developer već i klasi Employee jer je nasljeđuje klasa Developer.
Polimorfizam
Polimorfizam je još jedno važno obilježje OOP-a. Polimorfizam je sposobnost jezika da dopušta objektima ili entitetima da poprimaju više oblika. Na primjer, metoda koja ima razne implementacije polimorfna je u Javi.
Polimorfizam je u Javi dvije vrste:
- Preopterećenje ili vremenski sastav polimorfizma: U polimorfizmu vremena kompajliranja, poziv polimorfne ili preopterećene metode rješava se u vrijeme kompajliranja.
- Nadjačavanje ili runtime polimorfizam: U runtime polimorfizmu, poziv nadjačane metode u programu Java rješava se tijekom izvođenja.
O polimorfizmu ćemo detaljno razgovarati u našim slijedećim vodičima.
Dolje je dat primjer polimorfizma vremena kompajliranja u Javi u kojem imamo metodu add koja je preopterećena za izvršavanje zbrajanja s različitim vrstama operanda.
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)); } }
Izlaz
U ovom programu imamo tri preopterećene metode nazvane add. Prva metoda uzima dva int parametra, sljedeća metoda uzima tri int parametra, a treća metoda uzima dva dvostruka parametra. Ovisno o broju parametara, poziv metode se razrješava u vrijeme sastavljanja i upućuje se odgovarajući poziv.
Apstrakcija
Korištenjem apstrakcije podataka izlažemo samo bitne dijelove aplikacije koji su dostupni korisniku. Na primjer, ako imamo automobil, ne brinu nas unutarnje komponente automobila, već samo automobil razmatramo kao cjelinu.
Koristeći mehanizam za apstrakciju podataka, identificiramo samo potrebne detalje i zanemarujemo nebitne detalje. Java koristi apstraktne klase i sučelja za postizanje apstrakcije. Sučelja su 100% apstraktna jer imaju samo prototipove metoda, a ne i njihovu definiciju.
Sljedeći primjer prikazuje apstraktnu klasu i njezinu upotrebu.
// 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(); } }
Izlaz
U gornjem programu imamo apstraktni razred PetAnimals. U ovome imamo apstraktnu metodu ‘animalSound’. Tada kreiramo klasu Pas i nasljeđujemo klasu PetAnimals. U klasi Pas nadjačavamo metodu animalSound.
najbolji vatrozid za Windows 7 64 bit
Kapsulacija
Inkapsulacija je skrivanje podataka ili zaštita podataka. U programiranju postižemo inkapsulaciju umotavanjem podataka i metoda koje djeluju na te podatke u jednu jedinicu.
Video vodič: Inkapsulacija i polimorfizam u Javi
Klasa se može promatrati kao jedinica za enkapsulaciju, tj. Imamo članove podataka i metode koji djeluju na te članove podataka združene u jednu jedinicu.
Odgovarajuća inkapsulacija može se postići tako da se članovi podataka učine privatnim i da se metode koje rade s tim podacima učine javnima, tako da su podaci u potpunosti zaštićeni od vanjskih entiteta.
Sljedeći Java program prikazuje koncept enkapsulacije.
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()); } }
Izlaz
U gore navedenom programu imamo klasu Customer_Account.
U ovoj klasi imamo članove podataka koji su svi privatni. Zatim za svako privatno polje pružamo metode dobivanja i postavljanja za čitanje i postavljanje vrijednosti. Ti su geteri i postavljači javni. Na taj način zaštitimo podatkovna polja ne dopuštajući im izravno pristup izvan klase.
Pristup im je moguć samo putem getera i postavljača. To pokazuje enkapsulaciju koju smo gore opisali.
Često postavljana pitanja
P # 1) Što se podrazumijeva pod objektno orijentiranim programiranjem?
Odgovor: Objektno orijentirano programiranje (OOP) softverska je paradigma koja se vrti oko podataka. U OOP-u je naglasak stavljen na podatke i na taj se način problemi izražavaju u smislu objekata koji su entiteti koji se sastoje od podataka ili polja i metoda koje djeluju na tim poljima podataka.
Na taj se način primjenjuje nekoliko značajki OOP-a poput nasljeđivanja, polimorfizma, apstrakcije i enkapsulacije kako bi se osigurala sigurnost podataka, ponovna upotreba itd.
P # 2) Koja su 4 osnovna načela OOP-a?
Odgovor:Objektno orijentirano programiranje (OOP) ima četiri osnovna principa:
- Nasljeđivanje
- Polimorfizam
- Apstrakcija
- Kapsulacija
Oni se nazivaju i četiri stupa OOP-a.
P # 3) Zašto se Java naziva objektno orijentiranom?
Odgovor: Java ima objekt korijenske klase iz kojeg izvodimo sve ostale značajke Java. Dakle, bez klase i objekta ne možemo imati Java program. Stoga se Java naziva OOP jezikom.
P # 4) Je li Java isključivo objektno orijentirana?
Odgovor: Ne, Java nije čisti objektno orijentirani jezik. Kako Java također pruža primitivne vrste podataka poput int, char, float, double, long itd., Ona nije klasificirana kao čisti OOP jezik.
P # 5) Koja je razlika između C ++ i Jave?
Odgovor: I C ++ i Java su objektno orijentirani jezici i podržavaju OOP značajke. Ali C ++ je kompilirani jezik. S druge strane, Java je sastavljen kao i interpretirani jezik.
Java interpreter izvršava bajt kôd za vrijeme izvođenja i generira izlaz koji ga čini neovisnim o platformi. C ++ međutim ovisi o platformi.
Više o konceptu OOPS
Razred
Klasa je nacrt / prototip predmeta iz stvarnog svijeta i modelira stanje i ponašanje tog predmeta iz stvarnog svijeta.
Razredna deklaracija
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
Softverski su objekti poput predmeta iz stvarnog života sa stanjem i ponašanjem. Država će se pohraniti kao polje i izložiti svoje ponašanje kao metode.
Ovdje je soba poput generalnog dizajna. Unutar ove sobe trebali biste dizajnirati dnevnu sobu, kuhinju, spavaću sobu.
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(); }
Ovdje bi metoda „Keepthings ()“ trebala obavljati osnovne funkcije potrebne za sobu i trebala bi imati dodatne specifikacije prema klasi „dnevne sobe“ i klase „sobe za kuhanje“. Dakle, dvije bi klase trebale naslijediti metode u klasi 'sobe'.
Nasljeđivanje
Ponašanje (metode) i stanje jedne klase naslijeđene druge klase nazivaju se nasljeđivanjem. Metode i stanje nasljeđuju se od roditeljske klase do podređene klase.
Tako,
Class CookingRoom extends Room{ }
Class LivingRoom extends Room{ }
Polimorfizam
U biologiji se polimorfizam odnosi na začine koji mogu imati mnogo različitih oblika.
S istim konceptom u objektno orijentiranom programiranju, podređena klasa može naslijediti svoje metode roditeljske klase, također može dodati jedinstvene značajke tom ponašanju. Polimorfizam se može postići preopterećenjem ili nadjačavanjem metode.
Preopterećenje
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)); } }
Nadjačavanje
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(); } }
IZLAZ: Ovdje metoda podređene klase nadjačava metodu roditeljske klase.
Super ključna riječ
Ključna riječ Super referentna je varijabla koja se koristi za upućivanje na neposredni objekt nadređene klase. Pomoću ključne riječi super možete uputiti metodu nadređene klase ili varijable ili konstruktor.
Ova ključna riječ
Ova se ključna riječ koristi za pozivanje na trenutni objekt klase. Pomoću ove ključne riječi možete pristupiti trenutnoj varijabli instance klase ili metodi trenutne klase. To se može proslijediti kao argument u pozivu metode.
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()); } }
Graditelj
Java konstruktori su poput metoda koje će se pozivati kada se objekt kreira za klasu. Konstruktor bi trebao imati isto ime kao i klasa.
Class Myclass{ Myclass(); Method1() { } }
Tijekom stvaranja objekta za klasu, Myclass myobj = new Myclass ();
Pozvat će se metoda konstruktora. Konstruktor je automatski stvoren od strane Java kompajlera za sve klase prema zadanim postavkama.
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); } }
Pravila koja treba slijediti za konstruktor:
- Konstruktor bi trebao imati isto ime kao i naziv klase.
- Konstruktor ne bi trebao imati povratnu izjavu.
Bilješke koje treba napomenuti:
- U objektno orijentiranom programiranju objekti su glavni dio programiranja.
- OOP koncepti su objekt, klasa, nasljeđivanje, polimorfizam, konstruktor.
- Super ključna riječ koja se koristi za pozivanje članova roditeljskog razreda i ovaj Ključna riječ koristi se za pozivanje na trenutni objekt klase.
- Konstruktori su poput metoda koje će se pozivati kada se objekt kreira za klasu.
Zaključak
Ovaj je vodič obradio osnove važnih objektno-orijentiranih značajki koje podržava Java. Ovo je samo uvodni vodič o OOPS-u na Javi. Sve teme detaljno ćemo pokriti u našim sljedećim vodičima. Java podržava četiri stupa OOP-a, tj. Polimorfizam, nasljeđivanje, apstrakciju i enkapsulaciju.
Osim ovih značajki, Java također podržava ostale značajke i OOP konstrukcije poput sadržavanja, agregiranja, prosljeđivanja poruka itd. O čemu će biti riječi u našim nadolazećim vodičima.
Preporučena literatura
- JAVA Tutorial za početnike: 100+ praktičnih Java Video tutorijala
- Što je apstrakcija u Javi - naučite na primjerima
- Što je nasljeđivanje u Javi - Vodič sa primjerima
- Što je polimorfizam u Javi - Vodič sa primjerima
- Inkapsulacija u Javi: Kompletna lekcija s primjerima
- Vrste nasljeđivanja u Javi - višestruko nasljeđivanje
- OOPS koncepti u C #: Vodič za koncept objektno orijentiranog programiranja
- Objektno orijentirano programiranje na jeziku C ++