"హాయ్, అమిగో. ఈ రోజు నేను మీకు ఒక సాధారణ జావా ప్రోగ్రామ్ గురించి చెబుతాను. జావాలో వ్రాసిన ప్రతి ప్రోగ్రామ్‌లో తరగతులు మరియు వస్తువులు ఉంటాయి అనేది పెద్ద వార్త ."

"తరగతులు ఏమిటో నాకు ముందే తెలుసు. వస్తువులు ఏమిటి?"

"ఒక సారూప్యతతో ప్రారంభిద్దాం. మీరు ఒక చిన్న ఓడను నిర్మించాలనుకుంటున్నారని అనుకుందాం. మీరు డిజైన్‌పై పని చేసి, ఆపై బ్లూప్రింట్‌ను ఫ్యాక్టరీకి పంపండి, అక్కడ మీ డిజైన్ ప్రకారం ఓడ అసెంబుల్ చేయబడుతుంది. లేదా డజను ఓడలు లేదా ఇన్ని ఓడలు మీకు కావలసిన విధంగా. నా ఉద్దేశ్యం ఏమిటంటే, ఒక బ్లూప్రింట్ ఆధారంగా డజన్ల కొద్దీ ఒకేలాంటి ఓడలను తయారు చేయవచ్చు."

"ఇది జావాతో సరిగ్గా ఎలా పని చేస్తుంది."

" జావా ప్రోగ్రామర్లు డిజైన్ ఇంజనీర్‌ల వంటివారు, బ్లూప్రింట్‌లను సృష్టించే బదులు, వారు తరగతులను వ్రాస్తారు. షిప్ భాగాలు బ్లూప్రింట్‌ల ఆధారంగా తయారు చేయబడతాయి, అయితే వస్తువులు తరగతుల ఆధారంగా సృష్టించబడతాయి. "

"మొదట, మేము తరగతులను వ్రాస్తాము (బ్లూప్రింట్లను తయారు చేస్తాము). తర్వాత, ప్రోగ్రామ్ రన్ అయినప్పుడు, జావా యంత్రం ఈ తరగతుల ఆధారంగా వస్తువులను సృష్టిస్తుంది. ఇది బ్లూప్రింట్ నుండి ఓడలు ఎలా నిర్మించబడతాయో సరిగ్గా అదే విధంగా ఉంటుంది. ఒక బ్లూప్రింట్ - అనేక నౌకలు. ఓడలు భిన్నంగా ఉంటాయి. . వాటికి వేర్వేరు పేర్లు ఉన్నాయి మరియు వేర్వేరు సరుకులను తీసుకువెళతాయి. కానీ అవి ఇప్పటికీ ఒకేలా ఉన్నాయి. అవన్నీ ఒకేలా డిజైన్‌ను కలిగి ఉంటాయి మరియు ఒకే విధమైన పనులను చేయగలవు."

"సరే, నేను మీ షిప్ సారూప్యతను అర్థం చేసుకున్నాను. మీరు చెప్పేది నేను అర్థం చేసుకున్నట్లు నిర్ధారించుకోవడంలో నాకు సహాయపడటానికి మీరు నాకు మరికొన్ని ఇవ్వగలరా?"

"ఉదాహరణకు, తేనెటీగలను తీసుకోండి..."

"కాదు, దాన్ని గీసుకో. తేనెటీగలతో నాకు చేదు అనుభవం ఎదురైంది. చీమలను తీసుకుందాం."

"ఆబ్జెక్ట్‌లు ఎలా పరస్పరం సంకర్షణ చెందుతాయి అనేదానికి చీమల కాలనీ ఒక మంచి ఉదాహరణ. ఏదైనా చీమల కాలనీలో మూడు తరగతులు ఉంటాయి: రాణి, సైనికులు మరియు పని చేసే చీమలు. ప్రతి తరగతిలోని చీమల సంఖ్య మారుతూ ఉంటుంది. సాధారణంగా ఒక కాలనీలో ఒక రాణి మాత్రమే ఉంటుంది, డజన్ల కొద్దీ సైనికులు ఉంటారు. , మరియు వందలాది మంది కార్మికులు. మూడు తరగతులు, వందలకొద్దీ వస్తువులు. చీమలు తమ సొంత తరగతిలోని చీమలు మరియు ఇతర తరగతులకు చెందిన చీమలతో సంభాషించేటప్పుడు కఠినమైన నియమాలను అనుసరిస్తాయి."

"ఇది సరైన ఉదాహరణ. ఒక సాధారణ ప్రోగ్రామ్ సరిగ్గా అలాగే పనిచేస్తుంది. అన్ని తరగతులలో వస్తువులను సృష్టించే ఒక ప్రధాన వస్తువు ఉంది. వస్తువులు ఒకదానితో ఒకటి మరియు బాహ్య ప్రపంచంతో సంకర్షణ చెందుతాయి. వస్తువుల ప్రవర్తన అంతర్గతంగా హార్డ్‌వైర్డ్ (ప్రోగ్రామ్ చేయబడింది) ."

"నాకు అంతగా అర్థం కావడం లేదు. అంటే, నాకు అస్సలు అర్థం కావడం లేదు."

"ఈ రెండు వివరణలు ఒకే నాణేనికి రెండు వైపులా ఉన్నాయి. నిజం ఎక్కడో మధ్యలో ఉంది. మొదటి ఉదాహరణ (బ్లూప్రింట్‌లు మరియు ఓడల గురించి) తరగతి మరియు దాని వస్తువుల మధ్య సంబంధాన్ని చూపుతుంది. ఇది శక్తివంతమైన సారూప్యత. చీమల కాలనీ సారూప్యతను ప్రదర్శిస్తుంది వస్తువుల మధ్య సంబంధం, ఇది తరగతుల ద్వారా వివరించబడింది మరియు ప్రోగ్రామ్ నడుస్తున్నప్పుడు మాత్రమే ఉంటుంది."

"ప్రోగ్రామ్‌లో ఉపయోగించిన అన్ని ఆబ్జెక్ట్‌ల కోసం మేము తరగతులను వ్రాయాలని, ఆపై వాటి పరస్పర చర్యలను వివరించాలని మీ ఉద్దేశమా?"

"అవును, కానీ ఇది ధ్వనించే దాని కంటే సులభం. జావాలో, ప్రోగ్రామ్ నడుస్తున్నప్పుడు, అన్ని ఎంటిటీలు ఆబ్జెక్ట్‌లు. ప్రోగ్రామ్‌ను వ్రాయడం అనేది వస్తువులు పరస్పర చర్య చేయగల వివిధ మార్గాలను వివరిస్తుంది. వస్తువులు ఒకదానికొకటి పద్ధతులను పిలుస్తాయి మరియు అవసరమైన డేటాను పాస్ చేస్తాయి. వాళ్లకి."

"ఇది కొంచెం గజిబిజిగా ఉంది, కానీ నేను దాదాపుగా అర్థం చేసుకున్నాను."

"ఏ పద్ధతులు కాల్ చేయాలో మరియు ఏ డేటా పాస్ చేయాలో మాకు ఎలా తెలుసు?"

"ప్రతి తరగతికి ఒక డిక్లరేషన్ ఉంటుంది, అది దాని ఉద్దేశిత ఉపయోగాన్ని సూచిస్తుంది. అదేవిధంగా, ప్రతి పద్ధతికి అది ఏమి చేయగలదో మరియు దానికి మనం ఏ డేటాను పాస్ చేయాలి అని సూచించే ఒక డిక్లరేషన్ ఉంటుంది. ఒక తరగతిని ఉపయోగించడానికి, మీరు దేని గురించి సాధారణ అవగాహన కలిగి ఉండాలి. ప్రతి పద్ధతి ఏమి చేస్తుందో మీరు ఖచ్చితంగా తెలుసుకోవాలి, కానీ అది ఎలా చేస్తుందో కాదు . ఇది మంత్రదండం లాంటిది."

"హా! బాగుంది కదూ."

"ఇక్కడ. ఫైల్‌లను కాపీ చేసే క్లాస్ కోడ్‌ను చూడండి:"

c:\data.txtని c:\result.txtకి కాపీ చేయండి
package com.codegym.lesson2;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy
{
    public static void main(String[] args) throws IOException
    {
        FileInputStream fileInputStream = new FileInputStream("c:\data.txt");
        FileOutputStream fileOutputStream = new FileOutputStream("c:\result.txt");

        while (fileInputStream.available() > 0)
        {
            int data = fileInputStream.read();
            fileOutputStream.write(data);
        }

        fileInputStream.close();
        fileOutputStream.close();
    }
}

"నాకు అన్నీ లభిస్తాయని చెప్పలేను, కానీ దాని సారాంశం నాకు లభించిందని నేను భావిస్తున్నాను."

"గ్రేట్. తర్వాత కలుద్దాం."

"నేను దాదాపు మర్చిపోయాను. ఇదిగో డియెగో నుండి మీ పని."